以编程方式添加视图时不显示 TextInputLayout
TextInputLayout not showing when View added programmatically
我注意到 TextInputLayout 的一些奇怪行为:
当我将以下内容添加到我的布局时:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/txtFirstName"
style="@style/EditTextStyle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="In layout"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
一切正常。
当我膨胀类似的布局时:
View v = LayoutInflater.from(this).inflate(R.layout.edittext_w_surrounding_textinputlayout, null);
EditText editText = (EditText) v.findViewById(R.id.editText);
editText.setHint("Added programmatically");
ViewGroup root = (ViewGroup) findViewById(R.id.root);
root.addView(v);
TextInputLayout
没有出现,EditText
以标准方式运行。
知道原因是什么吗?
我用这个 ((FrameLayout) findViewById(R.id.framePreview)).addView(preview);完全没有问题,也许是视图类型?
这个应该
ViewGroup root = (ViewGroup) findViewById(R.id.root);
root.addView(v);
不是这个
LinearLayout root = (LinearLayout) findViewById(R.id.root);
root.addView(v);
您应该更改提示,不是在 EditText 上,而是在 TextInputLayout 上。所以它将是:
TextInputLayout v = (TextInputLayout) LayoutInflater.from(this).inflate(R.layout.edittext_w_surrounding_textinputlayout, null);
v.setHint("Added programmatically");
TextInputLayout 有它自己的提示参数,当从布局中膨胀时,它从它的子 EditText 获得提示并在其上设置空提示。
当您想以编程方式更改提示时,您必须调用 textInputLayout.setHint(String text) 而不是更改 EditText 提示
我注意到 TextInputLayout 的一些奇怪行为:
当我将以下内容添加到我的布局时:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/txtFirstName"
style="@style/EditTextStyle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="In layout"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
一切正常。
当我膨胀类似的布局时:
View v = LayoutInflater.from(this).inflate(R.layout.edittext_w_surrounding_textinputlayout, null);
EditText editText = (EditText) v.findViewById(R.id.editText);
editText.setHint("Added programmatically");
ViewGroup root = (ViewGroup) findViewById(R.id.root);
root.addView(v);
TextInputLayout
没有出现,EditText
以标准方式运行。
知道原因是什么吗?
我用这个 ((FrameLayout) findViewById(R.id.framePreview)).addView(preview);完全没有问题,也许是视图类型? 这个应该
ViewGroup root = (ViewGroup) findViewById(R.id.root);
root.addView(v);
不是这个
LinearLayout root = (LinearLayout) findViewById(R.id.root);
root.addView(v);
您应该更改提示,不是在 EditText 上,而是在 TextInputLayout 上。所以它将是:
TextInputLayout v = (TextInputLayout) LayoutInflater.from(this).inflate(R.layout.edittext_w_surrounding_textinputlayout, null);
v.setHint("Added programmatically");
TextInputLayout 有它自己的提示参数,当从布局中膨胀时,它从它的子 EditText 获得提示并在其上设置空提示。
当您想以编程方式更改提示时,您必须调用 textInputLayout.setHint(String text) 而不是更改 EditText 提示