【问题标题】:Edittext set for password with phone number input? (android)Edittext 为带有电话号码输入的密码设置? (安卓)
【发布时间】:2010-01-07 01:48:01
【问题描述】:

如何获得具有电话输入和隐藏字符串功能的 Edittext。我知道

android:inputType="textPassword"

隐藏字符串,而

android:inputType="phone"

调出拨号盘界面。

如何将两者结合起来?

【问题讨论】:

    标签: android android-edittext


    【解决方案1】:

    android:password 已弃用,但 AFAIK 是唯一的方法,因为 android:inputType="phone|textPassword" 被忽略...

    <EditText
        android:id="@+id/EditText01"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:password="true"
        android:inputType="phone" />
    

    【讨论】:

    • 啊,有趣。我没有看到它已被弃用。这是提到 inputType 的文档(正如 Roman 提到的那样):developer.android.com/reference/android/R.attr.html#password
    • 作为一点补充,对于那些想要从代码中做这些事情的人:editText.setInputType(InputType.TYPE_CLASS_PHONE); editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
    • inputType="numberPassword" 可能是最佳选择,但仅当您的应用的最小 SDK >= 3.0 (Honeycomb) 时才可用
    【解决方案2】:

    我相信这就是你想要的?

    android:inputType="numberPassword"
    

    编辑:在提出问题时(2010 年),这可能不在 API 中,但对于当代开发,它是可用的。

    【讨论】:

      【解决方案3】:

      我还没有找到解决这个问题的合适方法。 dtmilano 接受的解决方案并不完全有效。如果 EditText 在您拥有全屏键盘的横向模式下聚焦,则数字仍以明文显示,而不是被屏蔽。

      我花了很多时间查看实际的 TextView 代码,这是一个问题的原因是他们明确地检查 InputType 与 InputType.TYPE_CLASS_TEXT,如果我没记错的话,TYPE_MASK_CLASS。因此,如果您在这些范围内包含任何其他 InputType(我认为 TYPE_CLASS_TEXT 和 TYPE_MASK_CLASS 使用的范围是第一个字节),那么它将不会被识别为需要屏蔽的密码。

      我知道我说的很混乱。实际代码更令人困惑。老实说,我对 TextView 的代码感到非常震惊。这是一团乱麻,到处都是硬编码的支票。糟糕的编码实践会导致这样的问题。

      【讨论】:

        【解决方案4】:

        这个问题可以在不使用已弃用的android:password 的情况下解决。看我的回答here

        【讨论】:

        • 你认为 android:password 是如何工作的? ;) 是的,它是不推荐使用的 XML 属性,但是当属性出现时,运行时会执行什么代码?
        【解决方案5】:

        我还没有尝试过,但是可以像这样将两者结合起来:

        android:inputType="textPassword|phone"
        

        因为inputType 可以接受多个值。

        【讨论】:

        • 它不起作用。 EditText 忽略 textPassword 而只是设置为电话
        • 抱歉,我的回答只是一个有根据的猜测,没有经过测试。dtmilano 的 sn-p 看起来是正确的方法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-25
        相关资源
        最近更新 更多