自动关注下一个edittext以进行数字密码输入

时间:2013-02-08 19:47:13

标签: android-widget

从我的应用程序中,我希望更多像在iPhone上实现的密码输入四位数,这意味着使用蒙版点。我已经完成了正确的输入。然而,在addTextChangedListener中使用TextWatcher的具体实现时,当我输入4个错误的数字并且焦点返回到第一个并且每个数字也被清除时。在这种情况下,用于数字输入的原始软键盘切换回qwert,输入的任何字母或数字变为可见而不用带点掩码。

myEditText1.addTextChangedListener(new MyTextWatcher(mPasswordEditText){
       @Override
        public void afterTextChanged(Editable arg0) {
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            s = mPasswordEditText.getText();
            int cacheH = UnlockScreen.this.mPasswordEditText.getHeight();
            if(s.length() == 1){
                UnlockScreen.this.mPasswordEditText1.requestFocus();
                    mPasswordEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                    mPasswordEditText.setTransformationMethod(PasswordTransformationMethod.getInstance());
                    mPasswordEditText.setMinHeight(cacheH);
            }                   
        }
}); 

但它没有像预期的那样运作良好。 XML布局是:

           <EditText
                    android:id="@+id/unlock_screen_password_edittext_1"
                    style="@style/passcodeStyle"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight=".20"
                    android:layout_marginRight="10dip"
                    android:digits="@string/digits_only"
                    android:gravity="center"
                    android:inputType="number"
                    android:password="true"
                    android:maxLength="1"/>

任何想法,伙计们?

1 个答案:

答案 0 :(得分:0)

我正在使用setText(s.toString()。replace(s.toString(),'。'));而不是mPasswordEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);以及mPasswordEditText.setTransformationMethod(PasswordTransformationMethod.getInstance()); 并在每个edittext中为textChange状态设置标志。 我不确定它是最好的解决方案,但对于我的应用程序,这很好用,到目前为止我还不知道更好的方法。