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

Java 如何在Android中从styles.xml设置EditText样式?,java,android,xml,android-edittext,android-styles,Java,Android,Xml,Android Edittext,Android Styles,我正在生成EditText字段,并希望从styles.xml文件中设置其样式。但我无法做到这一点。我可以设置一些参数,但我更愿意使用styles.xml中的样式,以便以后在需要时更容易更改 styles.xml <style name="input_fields_single_line"> <item name="android:padding">8dp</item> <item name="androi

我正在生成
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>

8dp
@可绘制/输入\u字段\u形状
1.
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);
}
List inputFieldList=new ArrayList();
public void generateInputFields(){
EditText editTextFieldTitle=新的EditText(本);
inputFieldList.add(editTextFieldTitle);
editTextFieldTitle.setHint(R.string.enter_field_title);
editTextFieldTitle.setMaxLines(1);
editTextFieldTitle.setLayoutParams(新的LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_父项,LinearLayout.LayoutParams.WRAP_内容));
editTextFieldTitle.setFocusableInTouchMode(true);
editTextFieldTitle.requestFocus();
myLayout.addView(editTextFieldTitle);
}

您可以为EditText创建一个单独的样式,就像您正在做的那样,但它是小部件的父项。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>
<EditText
    android:id="@+id/editTextId"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/MyCustomeEditTextStyle" />
然后可以在应用程序样式中设置样式,如下所示:

EditText editTextFieldTitle = new EditText(this);
<style name="AppTheme" parent="@android:style/YourParentTheme">
    <item name="android:editTextStyle">@style/MyCustomeEditTextStyle</item>
</style>

@style/mycustomeeditextstyle

我在这里找到了解决方案


EditText中有一个名为styles的属性,请使用它。如果您想自定义它,而不是在drawable中创建自己的样式,请使用一个新的XML并链接到EditText的styles属性。

您好,谢谢您的回复。我在找这样的东西。editTextFieldTitle=新的EditText(新的ContextThemeWrapper(这个,R.style.input_fields_single_line));但出于某些原因,在您提出的问题中,它不起作用:“我正在生成EditText字段,并希望从styles.xml资源文件设置其样式。但无法做到这一点。”请您进一步澄清,您希望从样式中为EditText的哪一部分设置样式。谢谢,我找到了解决方案。我不得不在构造器中加入3个参数听到这个消息我很高兴
editTextFieldTitle = new EditText(new ContextThemeWrapper(getBaseContext(),R.style.input_fields_single_line),null,0);