在 EditText 视图中输入密码时,正在显示字符,经过一些延迟后,它显示为 DOT,我想消除此延迟。它应该直接显示为 DOT。
我如何在 Android 上做到这一点?
在 EditText 视图中输入密码时,正在显示字符,经过一些延迟后,它显示为 DOT,我想消除此延迟。它应该直接显示为 DOT。
我如何在 Android 上做到这一点?
这是 Android 中的用户设置,我不相信它可以通过代码控制。它旨在帮助用户输入正确的密码。
--编辑-- 除了提问者的评论,设置可以在以下位置找到:
设置 > 安全 > 使密码可见
以上涉及到Android ICS,设置应该和之前的版本差不多。
强行隐藏密码,
android.provider.Settings.System.putInt(this.getContentResolver(),android.provider.Settings.System.TEXT_SHOW_PASSWORD, 0);
注意:它不会显示任何字符,直接 DOT 将在您的 View 中显示,没有任何延迟,并将android:password属性设置为true
使用 AOSP PasswordTransformationMethod.java中的代码并修改它以满足您的需要。从中创建新类MyPasswordTransformationMethod并修改其中的Visible类。它还需要更改其余代码,因为它访问一些私有属性,但它们大多是常量,所以很容易。
private static class Visible
extends Handler
implements UpdateLayout, Runnable
{
public Visible(Spannable sp, MyPasswordTransformationMethod ptm) {
mText = sp;
mTransformer = ptm;
//postAtTime(this, SystemClock.uptimeMillis() + 1500);
//replaced with following line
postAtFrontOfQueue(this);
}
public void run() {
mText.removeSpan(this);
}
private Spannable mText;
private MyPasswordTransformationMethod mTransformer;
}
我知道这已经很老了,但这里有一个有用的提示!(这也可以)
如果您将焦点从当前的 EditText 移动到下一个,它将跳过延迟,因此如果您正在创建一个 PIN 屏幕,那么您只需立即将焦点移到下一个“pin”上,它就会跳过延迟并立即显示星号。
如果您只有 1 个 EditText,您可能还可以将 rootView 或容器设置为可聚焦并关注它。