我正在尝试使用custom:inputType="text"
custom:inputType="phone"
。
帮助我,edit_text
始终设置defvalue
。
但索引值存在问题
如果我使用format="integer"
那么
R.java
给出错误。
这是main.xml
<com.example.ClearableEditText.ClearableEditText
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
custom:hintText="@string/name"
custom:inputType="text" />
</LinearLayout>
attr.xml
。其中我使用inputType&#39; s格式作为整数
<declare-styleable name="ClearableEditText">
<attr name="hintText" format="string" />
<attr name="inputType" format="integer">
<flag name="text" value="0x00000001" />
<!--
Can be combined with <var>text</var> and its variations to
request capitalization of all characters. Corresponds to
{@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}.
-->
<flag name="phone" value="0x00000003" />
<!--
For entering a date and time. Corresponds to
{@link android.text.InputType#TYPE_CLASS_DATETIME} |
{@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}.
-->
</attr>
</declare-styleable>
这是类ClearableEditText
void initViews(Context context, AttributeSet attrs) {
TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.ClearableEditText, 0, 0);
try {
hintText = a.getString(R.styleable.ClearableEditText_hintText);
inputType=a.getResourceId(R.styleable.ClearableEditText_inputType, android.text.InputType.TYPE_CLASS_TEXT);
} finally {
a.recycle();
initViews();
}
}
void initViews() {
inflater = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.second, this, true);
edit_text = (EditText) findViewById(R.id.clearable_edit);
btn_clear = (Button) findViewById(R.id.clearable_button_clear);
btn_clear.setVisibility(RelativeLayout.INVISIBLE);
edit_text.setHint(hintText);
edit_text.setInputType(inputType);
}
答案 0 :(得分:1)
我发现了错误。 大声笑,我正在使用这个getResourceId(int,int); 但attr.xml我已将其声明为整数。
inputType=a.getResourceId(R.styleable.ClearableEditText_inputType,android.text.InputType.TYPE_CLASS_TEXT);
但是将其作为整数修复。
inputType=a.getInteger(R.styleable.ClearableEditText_inputType,android.text.InputType.TYPE_CLASS_TEXT);