如何设置 AndroidX 库的 EditTextPreference 的最大长度?
How to set maximal length of EditTextPreference of AndroidX Library?
最近,我将 android 项目迁移到 AndroidX,并使用 AndroidX 库中的 EditTextPreference。现在,我想将 EditTextPreference 的最大长度设置为 50。我尝试使用:
android:maxLength="50"
但它不起作用。
似乎所有 android 命名空间都不能与 EditTextPreference 一起使用,并且没有代码建议,所以我找不到任何相关代码来设置最大长度。如何设置最大长度?
您可以尝试使用 java 代码,它会起作用。
此处已截取。
EditText et = (EditText) findViewById(R.id.myeditText);
et.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(50) }); // maximum length is 50
希望对你有所帮助。
您需要通过按键找到您的 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() 方法中。
这是设置 EditTextPreference 的最大长度(在本例中为 10)的代码:
final EditTextPreference prefCustomText = findPreference(ActivityPreferences.PREF_DISPLAY_CUSTOM_TEXT);
prefCustomText.setOnBindEditTextListener(editText -> {
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
});
我正在添加@Viktor Brešan 所写的信息:
I think you should append the new InputFilter to ones that might have
been added to EditText previously. You can get them by calling
editText.getFilters()
最近,我将 android 项目迁移到 AndroidX,并使用 AndroidX 库中的 EditTextPreference。现在,我想将 EditTextPreference 的最大长度设置为 50。我尝试使用:
android:maxLength="50"
但它不起作用。
似乎所有 android 命名空间都不能与 EditTextPreference 一起使用,并且没有代码建议,所以我找不到任何相关代码来设置最大长度。如何设置最大长度?
您可以尝试使用 java 代码,它会起作用。 此处已截取。
EditText et = (EditText) findViewById(R.id.myeditText);
et.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(50) }); // maximum length is 50
希望对你有所帮助。
您需要通过按键找到您的 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() 方法中。
这是设置 EditTextPreference 的最大长度(在本例中为 10)的代码:
final EditTextPreference prefCustomText = findPreference(ActivityPreferences.PREF_DISPLAY_CUSTOM_TEXT);
prefCustomText.setOnBindEditTextListener(editText -> {
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
});
我正在添加@Viktor Brešan 所写的信息:
I think you should append the new InputFilter to ones that might have been added to EditText previously. You can get them by calling editText.getFilters()