无法使用numberPassword作为输入类型

时间:2014-08-14 09:07:26

标签: android textwatcher

我正在尝试使用android:inputType =" numberPassword"它不起作用。这些数字仍然出现在EditText中。这只发生在我输入第一个后添加TextWatcher切换到下一个EditText时。

public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
        if (ps1.getText().hashCode() == s.hashCode()) {
            ps1.clearFocus();
            ps2.requestFocus();
            ps2.setCursorVisible(true);
        } else if (ps2.getText().hashCode() == s.hashCode()) {
            ps2.clearFocus();
            ps3.requestFocus();
            ps3.setCursorVisible(true);
        } else if (ps3.getText().hashCode() == s.hashCode()) {
            ps3.clearFocus();
            ps4.requestFocus();
            ps4.setCursorVisible(true);
        }
    }

我能做些什么来使这项工作正常进行?

5 个答案:

答案 0 :(得分:1)

This problem can be solved without using deprecated android:password. Use the following code snippet, but do not reverse the sequence of calls:

    EditText editText = (EditText) findViewById(R.id.MyEditText);
    editText.setInputType(InputType.TYPE_CLASS_NUMBER);
    editText.setTransformationMethod(PasswordTransformationMethod.getInstance());

答案 1 :(得分:1)

在xml文件中使用以下行,希望它能帮到你

android:password="true"

可能会被弃用,但它只会尝试解决您的问题

或者你可以尝试

android:inputType="textPassword|number" 

忽略textPassword,只接受号码,但不接受密码。

因此,您应将android:inputType="textPassword|number"android:password="true".

一起使用

这似乎是唯一的解决方案。

答案 2 :(得分:1)

只需在 XML 中编写编辑文本,如下所示。

<EditText
                android:id="@+id/ed_login_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:inputType="textPassword"
                android:singleLine="true"
                android:text=""
/>

OR

以编程方式 setinputtype 试用 Edittext

editPass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)

我认为他们的Textwatcher存在问题,所以如果你想将单个TextWatcher用于多个EditTexts

请查看以下链接: - How to use Single TextWatcher for multiple EditTexts?

OR

使用以下 TextWatcher

方法访问您的Editexts
public void afterTextChanged(Editable editable) {

 }

希望它会对你有所帮助。

答案 3 :(得分:0)

如果有人在寻找简单的答案。让您的EditText包含此行android:inputType="numberPassword"。无需使用折旧的东西。只需将代码放在afterTextChanged而不是onTextChanged。

 @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub
        if (ps1.getText().hashCode() == s.hashCode()) {
            ps1.clearFocus();
            ps2.requestFocus();
            ps2.setCursorVisible(true);
        } else if (ps2.getText().hashCode() == s.hashCode()) {
            ps2.clearFocus();
            ps3.requestFocus();
            ps3.setCursorVisible(true);
        } else if (ps3.getText().hashCode() == s.hashCode()) {
            ps3.clearFocus();
            ps4.requestFocus();
            ps4.setCursorVisible(true);
        }
    }

我不确定为什么这样有效,所以任何知道的人都可以解释一下。

答案 4 :(得分:0)

对我来说     android:inputType =“ numberPassword”适用于     ValidationEditText