有没有办法重用attr inputType?

时间:2014-09-22 08:11:41

标签: android attr

我有一个自定义的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);

同样的错误。

有什么想法吗?谢谢!

1 个答案:

答案 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);
}