2010-01-07 96 views

回答

33

android:password已被弃用,但据我所知是唯一的出路,因为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" /> 
+0

啊,有趣。我没有看到它被弃用。以下是提及'inputType'的文档(如罗马提到的):http://developer.android.com/reference/android/R.attr.html#password – 2010-01-07 02:19:21

+1

作为一个小补充,对于那些想要做代码中的东西: editText.setInputType(InputType.TYPE_CLASS_PHONE); editText.setTransformationMethod(PasswordTransformationMethod.getInstance()); – 2014-01-23 03:11:22

+2

inputType =“numberPassword”可能是最好的选择,但它只适用于如果你的应用程序的最小SDK> = 3.0(蜂窝) – k2col 2014-05-27 20:43:12

0

我没有试过,但有可能在两个像这样结合:

android:inputType="textPassword|phone" 

因为inputType可以采取多个值。

+0

它不起作用。 EditText忽略textPassword,只是设置为电话 – Portablejim 2010-01-07 02:48:27

+1

对不起,我的答案只是一个受过教育的猜测,没有测试.. dtmilano的片段看起来是正确的路要走。 – 2010-01-07 20:00:40

1

这个问题可以不使用过时android:password来解决。看到我的回答here

+0

你认为android:密码是如何工作的? ;)是的,它是不推荐使用的XML属性,但是在呈现属性时在运行时执行了哪些代码? – 2014-01-23 03:20:25

2

我还没有找到适合此问题的解决方案。 dtmilano接受的解决方案并不完全适用。如果EditText专注于具有全屏幕键盘的横向模式,则数字仍然以明文形式显示,而不是屏蔽。

我花了显著时间通过实际TextView的代码去,这是一个问题的原因是,他们明确地检查,对InputType.TYPE_CLASS_TEXT的的inputType,如果我没有记错,TYPE_MASK_CLASS。所以如果你在这些边界内包含任何其他InputType(我认为TYPE_CLASS_TEXT和TYPE_MASK_CLASS使用的范围是第一个字节),那么它将不会被识别为需要掩蔽的密码。

我知道我说的很混乱。实际的代码很容易混淆。老实说,我对TextView的代码感到非常震惊。这是一团乱七八糟的事情,到处都是硬编码的检查。可怕的编码习惯会导致这样的问题。

5

我相信这是你想要的吗?

android:inputType="numberPassword" 

编辑:在这个问题(2010年),这可能尚未在API中,但对于当代的发展,它的可用时间。