如何在android中只设置EditTextPreference的数值.我希望用户输入端口号,不知道如何将限制放在那里
我正在使用此代码,用户可以输入任何字符串.想要限制用户仅限至少数字
<EditTextPreference
android:defaultValue="4444"
android:key="port"
android:title="Port"
android:dependency="service_on"
/>
Run Code Online (Sandbox Code Playgroud)
Sam*_*Sam 82
EditTextPreference小部件应采用与常规EditText相同的属性,因此使用:
android:inputType="number"
Run Code Online (Sandbox Code Playgroud)
或者更具体地说:
android:inputType="numberDecimal"
android:digits="0123456789"
Run Code Online (Sandbox Code Playgroud)
因为您只想将输入限制为端口号.
Dez*_*ezo 11
我使用androidX库,因为该库可以自定义EditTextPreference对话框的输入类型。AndroidX是对原始Android支持库的重大改进,因此建议所有人使用此库。您可以在此处阅读有关AndroidX的更多信息。
这是我在onCreatePreference方法内使用EditTextPreference的代码:
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preference, rootKey);
androidx.preference.EditTextPreference editTextPreference = getPreferenceManager().findPreference("use_key_from_editTextPreference_in_xml_file");
editTextPreference.setOnBindEditTextListener(new androidx.preference.EditTextPreference.OnBindEditTextListener() {
@Override
public void onBindEditText(@NonNull EditText editText) {
editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
}
});
}
Run Code Online (Sandbox Code Playgroud)
使用此代码并单击editTextPreference后,将弹出对话框,并且您的键盘输入类型将仅为数字。
androidx.preference自androidx.preference:preference:1.1.0-alpha022018年12月17 日起使用库,该库添加了EditTextPreference.OnBindEditTextListener接口,该接口允许您自定义绑定对话框后在相应对话框中显示的EditText。
因此,在这种情况下,您要做的就是在下面添加Kotlin代码。
val editTextPreference = preferenceManager.findPreference<EditTextPreference>("YOUR_PREFERENCE_KEY")
editTextPreference.setOnBindEditTextListener { editText ->
editText.inputType = InputType.TYPE_CLASS_NUMBER
}
Run Code Online (Sandbox Code Playgroud)
小智 6
带有十进制数字输入的 EditTextPreference (Kotlin):
var myEditTextPreference : EditTextPreference? = findPreference("myEditTextPreferenceKey")
myEditTextPreference?.setOnBindEditTextListener { editText ->
editText.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22597 次 |
| 最近记录: |