如何设置 AndroidX 库的 EditTextPreference 的最大长度?

Ber*_*hus 5 android edittextpreference androidx

最近,我将我的 android 项目迁移到了 AndroidX,并使用了 AndroidX 库中的 EditTextPreference。现在,我想将 EditTextPreference 的最大长度设置为 50。我尝试使用:

android:maxLength="50"
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

似乎所有 android 命名空间都不适用于 EditTextPreference 并且没有代码建议,所以我找不到任何相关代码来设置最大长度。如何设置最大长度?

小智 5

您需要按键找到您的 EditTextPreference,然后将 onBindEditTextListener 设置为它并在 onBindEditText 方法中更改布局属性:

EditTextPreference preference = findPreference("edit_text_preference_key");
    preference.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
        @Override
        public void onBindEditText(@NonNull EditText editText) {
            editText.setInputType(InputType.TYPE_CLASS_NUMBER); // set only numbers allowed to input
            editText.selectAll(); // select all text
            int maxLength = 2;
            editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)}); // set maxLength to 2
        }
    });
Run Code Online (Sandbox Code Playgroud)

您可以将此代码放在 PreferencesFragment 或 PreferencesActivity 的 onResume() 方法中。