3

在 EditText 视图中输入密码时,正在显示字符,经过一些延迟后,它显示为 DOT,我想消除此延迟。它应该直接显示为 DOT。

我如何在 Android 上做到这一点?

4

4 回答 4

1

这是 Android 中的用户设置,我不相信它可以通过代码控制。它旨在帮助用户输入正确的密码。

--编辑-- 除了提问者的评论,设置可以在以下位置找到:

设置 > 安全 > 使密码可见

以上涉及到Android ICS,设置应该和之前的版本差不多。

于 2012-06-22T08:08:56.747 回答
1

强行隐藏密码,

android.provider.Settings.System.putInt(this.getContentResolver(),android.provider.Settings.System.TEXT_SHOW_PASSWORD, 0);

注意:它不会显示任何字符,直接 DOT 将在您的 View 中显示,没有任何延迟,并将android:password属性设置为true

于 2012-06-22T08:44:38.407 回答
0

使用 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;
}
于 2012-12-19T11:30:10.117 回答
-1

我知道这已经很老了,但这里有一个有用的提示!(这也可以)

如果您将焦点从当前的 EditText 移动到下一个,它将跳过延迟,因此如果您正在创建一个 PIN 屏幕,那么您只需立即将焦点移到下一个“pin”上,它就会跳过延迟并立即显示星号。

如果您只有 1 个 EditText,您可能还可以将 rootView 或容器设置为可聚焦并关注它。

于 2021-06-05T10:40:39.480 回答