如何解决如何在Android中的styles.xml中设置EditText样式?
我正在生成EditText
字段,并希望通过 styles.xml 文件设置其样式。但无法做到这一点。我可以设置一些参数,但是我更愿意使用styles.xml中的样式,这样以后在需要时更容易进行更改。
styles.xml
<style name="input_fields_single_line">
<item name="android:padding">8dp</item>
<item name="android:background">@drawable/input_field_shape</item>
<item name="android:maxLines">1</item>
</style>
Java代码:
List<EditText> inputFieldList = new ArrayList<EditText>();
public void generateInputFields() {
EditText editTextFieldTitle = new EditText(this);
inputFieldList.add(editTextFieldTitle);
editTextFieldTitle.setHint(R.string.enter_field_title);
editTextFieldTitle.setMaxLines(1);
editTextFieldTitle.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT));
editTextFieldTitle.setFocusableInTouchMode(true);
editTextFieldTitle.requestFocus();
myLayout.addView(editTextFieldTitle);
}
解决方法
您可以像正在执行的操作一样为EditText创建一个单独的样式,但是将其作为Widget.EditText的父项,如下所示:
<style name="MyCustomeEditTextStyle" parent="@android:style/Widget.EditText">
...add as many items as you need
<item name="android:padding">8dp</item>
<item name="android:background">@drawable/input_field_shape</item>
<item name="android:maxLines">1</item>
</style>
然后在xml中的每个编辑文本中调用样式,如下所示:
<EditText
android:id="@+id/editTextId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/MyCustomeEditTextStyle" />
但是如果您希望将其全局设置一次,并且不使用xml进行设置,因为您将以编程方式生成EditText,如下所示:
EditText editTextFieldTitle = new EditText(this);
然后您可以像这样在应用程序样式中设置样式:
<style name="AppTheme" parent="@android:style/YourParentTheme">
<item name="android:editTextStyle">@style/MyCustomeEditTextStyle</item>
</style>
,
我在这里找到了解决方案。 Android: set view style programmatically
editTextFieldTitle = new EditText(new ContextThemeWrapper(getBaseContext(),R.style.input_fields_single_line),null,0);
,
EditText中有一个名为styles的属性。如果要自定义它,而不是在drawable中创建自己的样式,则为一个新的XML,并使用styles属性链接到editText。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。