EditTextPreference上的setInputType

时间:2011-09-06 12:12:23

标签: java android android-preferences

如何将“setInputType”属性添加到EditTextPreference(我的目标是仅将输入类型设置为数字),我尝试过:

editTextPref.setInputType(InputType.TYPE_CLASS_NUMBER);

但这似乎只适用于EditTexts,而不适用于EditTextPreferences

3 个答案:

答案 0 :(得分:8)

您可以从首选项中检索EditText,然后从那里检索setInputTypes或使用KeyListeners来通知键盘:

EditText et = (EditText) editTextPref.getEditText();
et.setKeyListener(DigitsKeyListener.getInstance());

答案 1 :(得分:4)

如果您真正需要的只是editTextPreference的单个inputType,您可以使用android:inputType =“number”或android:inputType =“numberDecimal”在XML中设置它。

示例:

<EditTextPreference
        android:defaultValue="130"
        android:dialogMessage="@string/upper_limit_hint"
        android:dialogTitle="@string/upper_limit_text"
        android:inputType="number"
        android:key="UPPER_LIMIT"
        android:maxLength="4"
        android:summary="@string/upper_limit_hint"
        android:title="@string/upper_limit_text" />

另外,对于Dave的上述建议,我能够通过将EditTextPreference分配给TextView(我无法使用EditText)以编程方式实现此目的。

示例:

EditTextPreference editTextPreference = (EditTextPreference) preference;
        TextView etpTextView = (TextView) editTextPreference.getEditText();
        // If I want entry with decimal capability
        etpTextView.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
        // or if I want entry without decimal capability
        etpTextView.setInputType(InputType.TYPE_CLASS_NUMBER);

答案 2 :(得分:0)

试试这个

  1. 从您的editTextPref
  2. 调用getEditText()
  3. 然后将输入类型设置为。