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
createev_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);
}