我正在尝试为密码添加<div id="block-1">
<div id="inner-block"></div>
</div>
<div id="block-2"></div>
,并且想要隐藏字符并显示星号,但无法这样做。
这是我的preference.xml文件:
EditTextPreference
我做错了什么? 谢谢!
答案 0 :(得分:0)
android:password="true"
已过时,您应改用android:inputType="textPassword"
。
答案 1 :(得分:0)
如果您需要隐藏摘要中显示的文本,则应在xml文件之外进行。您可能具有来自Android Studio的代码模板,其中包含Preference.OnPreferenceChangeListener
的实现。内部有更改设置时调用的回调方法。默认情况下,它将摘要更改为传入值:
preference.setSummary(stringValue);
相反,您需要检查首选项是否是您的密码,并跳过设置摘要的操作,例如:
if ("password".equals(preference.getKey())) {
preference.setSummary("***");
} else {
preference.setSummary(stringValue);
}
答案 2 :(得分:0)
在 Androidx 中,这必须通过以下两步过程来完成
EditTextPreference passwordEditText = (EditTextPreference)findPreference("password");
passwordEditText.setOnBindEditTextListener(new androidx.preference.EditTextPreference.OnBindEditTextListener() {
@Override
public void onBindEditText(@NonNull EditText editText) {
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
});
passwordEditText.setSummaryProvider(new Preference.SummaryProvider() {
@Override
public CharSequence provideSummary(Preference preference) {
int valueSize= PreferenceManager.getDefaultSharedPreferences(getContext()).getString(preference.getKey(),"").length();
String newSummary="";
for (int i = 0; i < valueSize; i++) {
newSummary+="*";
}
return newSummary;
}
});