setInputType для EditTextPreference - PullRequest
       1

setInputType для EditTextPreference

7 голосов
/ 06 сентября 2011

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

editTextPref.setInputType(InputType.TYPE_CLASS_NUMBER);

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

Ответы [ 3 ]

8 голосов
/ 06 сентября 2011

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

EditText et = (EditText) editTextPref.getEditText();
et.setKeyListener(DigitsKeyListener.getInstance());
4 голосов
/ 13 апреля 2014

Если все, что вам действительно нужно, это один 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);
0 голосов
/ 06 сентября 2011

Попробуйте

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