以编程方式添加的 EditText 缺少样式
Programmatically added EditText missing style
我有一个对话框片段,它在其布局中定义了一个 EditText,并以编程方式添加了许多其他 EditText(因为它们的数量可能不同)。我的问题是 xml 中定义的具有默认平台样式 - 例如下面的蓝色条 - 而以编程方式添加的条似乎没有样式。请参阅屏幕截图以供参考。
如何在保持默认样式的同时以编程方式创建 EditText?
我如何创建 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);
首先在 Layout 文件夹中创建 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" />
然后在您的代码中像下面一样膨胀它:
TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
希望这有效。
使用下面的代码片段
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);
}
使用以下代码片段。
EditText et = new AppCompatEditText(this.getActivity());
我有一个对话框片段,它在其布局中定义了一个 EditText,并以编程方式添加了许多其他 EditText(因为它们的数量可能不同)。我的问题是 xml 中定义的具有默认平台样式 - 例如下面的蓝色条 - 而以编程方式添加的条似乎没有样式。请参阅屏幕截图以供参考。
如何在保持默认样式的同时以编程方式创建 EditText?
我如何创建 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);
首先在 Layout 文件夹中创建 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" />
然后在您的代码中像下面一样膨胀它:
TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
希望这有效。
使用下面的代码片段
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);
}
使用以下代码片段。
EditText et = new AppCompatEditText(this.getActivity());