Android EditText应用了样式奇怪的行为

Android EditText应用了样式奇怪的行为,android,Android,我创建编辑文本样式: <style name="EditModeTextEdit"> <item name="android:textColor">@color/edittext_textcolor</item> <item name="android:textSize">@dimen/edittext_textsize</item> <item name="android:textStyle">b

我创建编辑文本样式:

 <style name="EditModeTextEdit">
    <item name="android:textColor">@color/edittext_textcolor</item>
    <item name="android:textSize">@dimen/edittext_textsize</item>
    <item name="android:textStyle">bold</item>
    <item name="android:enabled">true</item>
    <item name="android:focusable">true</item>
    <item name="android:background">@drawable/textedit_border</item>
    <item name="android:layout_margin">@dimen/form_margin</item>
 </style>
显示已设置样式的组件,但无法与edittext交互(键盘未显示)

我目前被迫使用EditText set方法手动设置每个元素:

protected EditText createEditText(String defaultText, String uiTag)
{
        GridLayout.LayoutParams lp = createDefaultGridParams();
        lp.setGravity(Gravity.FILL_HORIZONTAL);
        lp.width = 250;


        EditText et = new EditText(mCtx);
        et.setTextColor(getResources().getColor(R.color.edittext_textcolor));
        et.setBackgroundResource(R.drawable.textedit_border);
        et.setTag(uiTag);
        et.setText(defaultText);
        et.setSingleLine(true);
        et.setLayoutParams(lp);

     return et;
}

有人知道为什么会这样吗?

你可能会走另一条路。您可以使用指定的样式创建模板布局xml文件,例如在
res/layout
create
ev_template.xml
中,使用以下内容:

<?xml version="1.0" encoding="utf-8"?>
<EditText
  android:id="@+id/my_acc_edit_tel_et"
  style="@style/EditModeTextEdit"
  android:singleLine="true"
  custom:layout_gravity="fill_horizontal"/>
attr
包含所有attr和
defStyle
包含所有attr值。您在其中输入0和null。因此,您不能获取任何attr

EditText et = new EditText(new ContextThemeWrapper(mCtx, R.style.EditModeTextEdit), 0, null);
protected EditText createEditText(String defaultText, String uiTag)
{
        GridLayout.LayoutParams lp = createDefaultGridParams();
        lp.setGravity(Gravity.FILL_HORIZONTAL);
        lp.width = 250;


        EditText et = new EditText(mCtx);
        et.setTextColor(getResources().getColor(R.color.edittext_textcolor));
        et.setBackgroundResource(R.drawable.textedit_border);
        et.setTag(uiTag);
        et.setText(defaultText);
        et.setSingleLine(true);
        et.setLayoutParams(lp);

     return et;
}
<?xml version="1.0" encoding="utf-8"?>
<EditText
  android:id="@+id/my_acc_edit_tel_et"
  style="@style/EditModeTextEdit"
  android:singleLine="true"
  custom:layout_gravity="fill_horizontal"/>
EditText et = (EditText) LayoutInflater.from(mCtx).inflate(R.layout.ev_template, null);
  public EditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }