0

从我的应用程序中,我希望在 iPhone 上实现的更像是用四位数字输入密码,这意味着带有掩码点。我已经完成了正确的条目。但是,在使用 TextWatcher 的具体实现addTextChangedListener时,当我输入了 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"/>

任何想法,伙计们?

4

1 回答 1

0

我正在使用 setText(s.toString().replace(s.toString(), '.')); 而不是 mPasswordEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 和 mPasswordEditText.setTransformationMethod(PasswordTransformationMethod.getInstance()); 并在每个编辑文本中为 textChange 状态设置标志。我不确定这是否是最好的解决方案,但对于我的应用程序来说,它工作得很好,到目前为止我还没有想到更好的方法。

于 2013-02-14T17:31:35.930 回答