Android 以编程方式添加EditText缺少样式

Android 以编程方式添加EditText缺少样式,android,android-edittext,Android,Android Edittext,我有一个对话框片段,它在布局中定义了一个EditText,并以编程方式添加了许多其他EditText(因为它们的数量可能会有所不同)。我的问题是,在xml中定义的具有默认的平台样式(例如下面的蓝色条),而通过编程添加的样式似乎没有样式。请参见屏幕截图以获取参考 如何在保持默认样式的同时以编程方式创建EditText 如何创建编辑文本: EditText et = new EditText(this.getActivity()); LinearLayout.LayoutParams params

我有一个对话框片段,它在布局中定义了一个EditText,并以编程方式添加了许多其他EditText(因为它们的数量可能会有所不同)。我的问题是,在xml中定义的具有默认的平台样式(例如下面的蓝色条),而通过编程添加的样式似乎没有样式。请参见屏幕截图以获取参考

如何在保持默认样式的同时以编程方式创建EditText

如何创建编辑文本:

EditText et = new EditText(this.getActivity());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.topMargin = 10;

et.setText("whatever");
et.setLayoutParams(params);

mContainer.addView(et);

首先在布局文件夹中创建xml资源,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="This is a template"
    style="@style/my_style" />

希望这能起作用。

使用以下代码片段

Drawable drawable = editText.getBackground();
int sdk = android.os.Build.VERSION.SDK_INT;
int osVersion = android.os.Build.VERSION_CODES.JELLY_BEAN;
if(sdk < osVersion) {
    editText.setBackgroundDrawable(originalDrawable);
} else {
    editText.setBackground(originalDrawable);
}
Drawable-Drawable=editText.getBackground();
int sdk=android.os.Build.VERSION.sdk\u int;
int osVersion=android.os.Build.VERSION\u CODES.JELLY\u BEAN;
如果(sdk
使用以下代码段

EditText et = new AppCompatEditText(this.getActivity());

谢谢使用样式集从XML进行膨胀是可行的。我刚刚使用了style=“@android:style/Widget.EditText”。这只适用于后台。我想确保其他样式元素也匹配。
EditText et = new AppCompatEditText(this.getActivity());