是否可以将 EditTextPreference 限制为数字?

Is it possible to restrict a EditTextPreference to numbers?

我的应用程序设置中有一个 EditTextPreference,我只想接受正十进制数:

<EditTextPreference
    android:key="annual_vacation_setting"
    android:title="@string/enter_annual_vacation"
    android:defaultValue="@string/default_annual_vacation"
    android:inputType="numberDecimal"
    android:selectAllOnFocus="true" />

不幸的是,inputType 属性似乎没有任何作用。用户可以输入任意字符串。

解决方案 1

您需要将 inputType 设置为 onBinding 之后的 EditText:

editTextPrefView.setOnBindEditTextListener { editText ->
    editText.inputType = InputType.TYPE_CLASS_NUMBER
}

解决方案 2

使用这个 FIX library。它会让你直接设置 android:inputType=numberDecimalEditTextPreferenceXML