微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Android中的styles.xml中设置EditText样式?

如何解决如何在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 举报,一经查实,本站将立刻删除。