setInputType на EditTextPreference

как я могу добавить свойство "setInputType" в EditTextPreference (моя цель - установить тип ввода только для чисел), я пробовал:

editTextPref.setInputType(InputType.TYPE_CLASS_NUMBER);

но это работает только для EditTexts, а не для EditTextPreferences


person 92Jacko    schedule 06.09.2011    source источник


Ответы (3)


Вы можете получить EditText из Preference и оттуда setInputTypes или использовать KeyListeners для информирования клавиатуры:

EditText et = (EditText) editTextPref.getEditText();
et.setKeyListener(DigitsKeyListener.getInstance());
person David Snabel-Caunt    schedule 06.09.2011

Если все, что вам действительно нужно, это один inputType для вашего editTextPreference, вы можете установить его в XML с помощью android:inputType="number" или android:inputType="numberDecimal".

Пример:

<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" />

Кроме того, благодаря предложению Дейва выше, я смог добиться этого программно, назначив 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);
person William Bell    schedule 13.04.2014

Попробуй это

  1. вызовите getEditText() из вашего editTextPref
  2. затем установите тип ввода для этого.
person Noby    schedule 06.09.2011