Search code examples
javaandroidandroid-edittextandroid-preferences

How can I mask the summary of an EditTextPreference when it is a masked password field?


I'm using an onPreferenceChangeListener attached to my EditTextPreference that shows the value of the preference in the summary. Here's what it looks like:

public boolean onPreferenceChange(Preference prePreference, Object objValue) {
    if (prePreference instanceof EditTextPreference) {
        //TODO: Check if password type and show chacraters
        prePreference.setSummary(objValue.toString());
    }
    return true;
}

If the field is a masked password field, I'd like to show the default password mask characters in the the summary. Here's an example of a masked field:

    <EditTextPreference
        android:inputType="textPassword"
        android:key="password"
        android:title="@string/password" />

Solution

  • Something like:

    EditText edit = ((EditTextPreference) prePreference).getEditText();
    String pref = edit.getTransformationMethod().getTransformation(objValue.toString(), edit).toString();
    prePreference.setSummary(pref);