如何在 android 中动态设置 TextInputLayout 的样式?
How Can I set style to TextInputLayout by dynamically in android?
我想动态创建TexInputLayout。我可以使用以下代码块创建 TextInputLayout :
TextInputLayout til = new TextInputLayout(this);
EditText et = new EditText(this);
til.addView(et);
et.setHint("Enter");
information.addView(til);
信息是我在项目中使用的线性布局的名称。
但我想更改动态创建的 TextInputLaout 的样式,我想使用 @style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.
我尝试了以下代码块来更改样式:
TextInputLayout till= new TextInputLayout(new ContextThemeWrapper(this,
R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox));
EditText et = new EditText(this);
til.addView(et);
et.setHint("Enter");
information.addView(til);
但是这些代码不起作用。如何为我动态创建的 TextInputLayout 添加样式?
ContextThemeWrapper
的第二个参数是主题覆盖,而不是样式。
您可以在 attrs.xml
中定义自定义属性:
<attr name="customTextInputStyle" format="reference" />
然后在您的应用主题中:
<style name="AppTheme" parent="Theme.MaterialComponents.*">
<!-- ..... -->
<item name="customTextInputStyle">@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox</item>
</style>
最后:
TextInputLayout til = new TextInputLayout(this,null,R.attr.customTextInputStyle);
til.setHint("Label");
TextInputEditText et = new TextInputEditText(til.getContext()); //important: get the themed context from the TextInputLayout
til.addView(et);
buttonsLayout.addView(til);
我想动态创建TexInputLayout。我可以使用以下代码块创建 TextInputLayout :
TextInputLayout til = new TextInputLayout(this);
EditText et = new EditText(this);
til.addView(et);
et.setHint("Enter");
information.addView(til);
信息是我在项目中使用的线性布局的名称。
但我想更改动态创建的 TextInputLaout 的样式,我想使用 @style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.
我尝试了以下代码块来更改样式:
TextInputLayout till= new TextInputLayout(new ContextThemeWrapper(this,
R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox));
EditText et = new EditText(this);
til.addView(et);
et.setHint("Enter");
information.addView(til);
但是这些代码不起作用。如何为我动态创建的 TextInputLayout 添加样式?
ContextThemeWrapper
的第二个参数是主题覆盖,而不是样式。
您可以在 attrs.xml
中定义自定义属性:
<attr name="customTextInputStyle" format="reference" />
然后在您的应用主题中:
<style name="AppTheme" parent="Theme.MaterialComponents.*">
<!-- ..... -->
<item name="customTextInputStyle">@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox</item>
</style>
最后:
TextInputLayout til = new TextInputLayout(this,null,R.attr.customTextInputStyle);
til.setHint("Label");
TextInputEditText et = new TextInputEditText(til.getContext()); //important: get the themed context from the TextInputLayout
til.addView(et);
buttonsLayout.addView(til);