我有一个自定义的ViewGroup,它包含一个EditText。 我想在xml中为EditText设置inputType。但我不想重新定义输入类型。我怎么能这样做?
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyEditText);
a.getInt(android.R.attr.inputType, EditorInfo.TYPE_NULL);
引起:java.lang.ArrayIndexOutOfBoundsException:
错误,因为我的ViewGroup中没有inputType attr 我也试过这个:
int[] attrsReuse = new int[] { android.R.attr.inputType /* index 0 */};
Resources.Theme theme = context.getTheme();
TypedArray ta = theme.obtainStyledAttributes(attrsReuse);
同样的错误。
有什么想法吗?谢谢!
答案 0 :(得分:18)
我找到了一种方法。
将此添加到 attrs.xml :
<declare-styleable name="MyEditText" >
<attr name="android:inputType"/>
</declare-styleable>
将其添加到布局中查看:
android:inputType="textPassword"
然后我可以在我的cusom视图类中获取此attr:
int inputType = a.getInt(R.styleable.MyEditText_android_inputType, EditorInfo.TYPE_NULL);
if (inputType != EditorInfo.TYPE_NULL) {
mInputEditText.setInputType(inputType);
}