EditTextPreference - 只有数值inputType - 不起作用

use*_*r25 2 android android-support-library

<android.support.v7.preference.EditTextPreference
            android:key="prefTest"
            android:title="test number input"
            android:inputType="numberDecimal|numberSigned"
            android:defaultValue="800"/>
Run Code Online (Sandbox Code Playgroud)

它仍然显示常规键盘,并允许我键入任何字符

有什么问题android.support.v7吗?

sch*_*v09 8

设置的开发人员指南中的自定义设置部分建议您使用以下方式OnBindEditTextListener以编程方式设置输入类型:

public class SettingsFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.settings_screen, rootKey);

        EditTextPreference weeklyGoalPref = findPreference("weekly_goal");
        if (weeklyGoalPref != null) {
            weeklyGoalPref.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
                @Override
                public void onBindEditText(@NonNull EditText editText) {
                    editText.setInputType(InputType.TYPE_CLASS_NUMBER);
                }
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试在 xml 中将输入类型定义为“数字”,但仍然使用带字母的普通键盘。这种方法对我有用。


Shi*_*rma 5

android:digits="0123456789"
Run Code Online (Sandbox Code Playgroud)

在edittext中使用它,因为它只接受定义的数字.如果它不起作用,那么使用Android-Support-Preference-V7-Fix库.

修复了EditTextPreference将XML属性(如inputType)转发到EditText,就像原始首选项一样.

  • 修复库解决了问题,omg google(官方支持库的开发人员)糟透了 (6认同)