Search code examples
androidandroid-xmlandroidxandroid-preferences

How to use numbers in EditText Preference androidx?


I need to display number keyboard in EditText Preference which is androidx.

proxy.xml:

 <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >


    <EditTextPreference
        android:dialogTitle="edittext_dialogtitle_proxy_port"
        android:key="edittext_key_proxy_port"
        android:inputType="numberPassword"
        android:digits="0123456789."
        android:summary="Summary"
        android:title="Port"/>

</PreferenceScreen>

MainActivity:

 public class MainActivity extends PreferenceFragmentCompat {
    EditTextPreference mPortField;
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        addPreferencesFromResource(R.xml.proxy);
        mPortField = (EditTextPreference) findPreference("edittext_key_proxy_port");
        mPortField.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
            @Override
            public void onBindEditText(@NonNull EditText editText) {

            }
        });
 }

I am not getting number keypad

[![enter image description here][1]][1]

Solution

  • according to this doc android:inputType is applicable only for EditText, not EditTextPreference (which isn't extending EditText, DialogPreference instead). but you already figured out how to get EditText hidden in EditTextPreference, so maybe just set digit limitation programmatically inside onBindEditText with below line

    editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
    

    (more info HERE)