即使使用 android:inputType="textPassword",EditTextPreference 也不会屏蔽密码
EditTextPreference does not mask password even with android:inputType="textPassword"
我有以下代码
<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
app:key="pref_password"
app:title="Password"
app:iconSpaceReserved="false"
app:dialogTitle="Password"
android:inputType="textPassword"/>
</androidx.preference.PreferenceScreen>
但是即使 android:inputType="textPassword"
编辑文本字段也没有被点遮盖
我正在使用androidx。任何人请帮助
更新
我尝试按照评论者的建议进行关注,但没有成功
<EditTextPreference
android:key="pref_password"
android:title="Password"
app:iconSpaceReserved="false"
android:dialogTitle="Password"
android:inputType="textPassword"/>
直接在 EditTextPreference 上设置属性不适用于 AndroidX 库 - 因为 EditTextPreference 不是 EditText,因此不应该这样工作。相反,您应该在显示时使用 OnBindEditTextListener
自定义 EditText。 (需要 androidx.preference:preference v1.1.0 及更高版本)
有关详细信息,请参阅 settings guide
用代码编辑:
Java:
EditTextPreference preference = findPreference("pref_password");
if (preference!= null) {
preference.setOnBindEditTextListener(
new EditTextPreference.OnBindEditTextListener() {
@Override
public void onBindEditText(@NonNull EditText editText) {
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
});
}
科特林:
val editTextPreference: EditTextPreference? = findPreference("pref_password")
editTextPreference?.setOnBindEditTextListener {editText ->
editText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
}
我有以下代码
<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
app:key="pref_password"
app:title="Password"
app:iconSpaceReserved="false"
app:dialogTitle="Password"
android:inputType="textPassword"/>
</androidx.preference.PreferenceScreen>
但是即使 android:inputType="textPassword"
我正在使用androidx。任何人请帮助
更新
我尝试按照评论者的建议进行关注,但没有成功
<EditTextPreference
android:key="pref_password"
android:title="Password"
app:iconSpaceReserved="false"
android:dialogTitle="Password"
android:inputType="textPassword"/>
直接在 EditTextPreference 上设置属性不适用于 AndroidX 库 - 因为 EditTextPreference 不是 EditText,因此不应该这样工作。相反,您应该在显示时使用 OnBindEditTextListener
自定义 EditText。 (需要 androidx.preference:preference v1.1.0 及更高版本)
有关详细信息,请参阅 settings guide
用代码编辑:
Java:
EditTextPreference preference = findPreference("pref_password");
if (preference!= null) {
preference.setOnBindEditTextListener(
new EditTextPreference.OnBindEditTextListener() {
@Override
public void onBindEditText(@NonNull EditText editText) {
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
});
}
科特林:
val editTextPreference: EditTextPreference? = findPreference("pref_password")
editTextPreference?.setOnBindEditTextListener {editText ->
editText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
}