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

时间:2019-05-14 10:59:41

标签: android androidx edittextpreference

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

android:maxLength="50"

但是它不起作用。

似乎所有android名称空间都无法与EditTextPreference一起使用,并且没有代码建议,因此我找不到任何相关代码来设置最大长度。如何设置最大长度?

3 个答案:

答案 0 :(得分:0)

您可以尝试使用Java代码,这将起作用。 这里被剪了。

EditText et = (EditText) findViewById(R.id.myeditText);
et.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(50) }); // maximum length is 50

希望对您有所帮助。

答案 1 :(得分:0)

您需要按键找到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
        }
    });

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

答案 2 :(得分:0)

这是用于设置EditTextPreference的最大长度(在这种情况下为10)的代码:

final EditTextPreference prefCustomText = findPreference(ActivityPreferences.PREF_DISPLAY_CUSTOM_TEXT);
prefCustomText.setOnBindEditTextListener(editText -> {
    editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
});

我正在添加@ViktorBrešan写的信息:

我认为您应该将新的InputFilter附加到可能具有 以前已添加到EditText中。你可以打电话给他们 editText.getFilters()