0

我正在尝试做一个锁屏,锁屏基本上有四个编辑文本字段,这些字段基本上都是数字输入,提供数字部分没有问题。

现在我遇到的问题是,文本字段应该只取一个数值,而编辑文本字段应该改变焦点,在为一个字段提供值之后,如何实现这一点?

4

3 回答 3

0

使用以下属性仅输入数字

<EditText android:inputType="number" ... />

或者

<EditText
    android:inputType="phone"
    android:digits="1234567890"
    ...
/>
于 2012-10-18T21:26:01.367 回答
0

为了只允许数字输入(并且还显示“数字”-键盘),请使用inputTypeEditText类的 - 属性。要只允许在字段中输入一位数字,您可以使用android:maxLength-attibute

使用 aTextWatcher检查是否已在文本字段中输入了一位数字并将焦点更改为下一个字段。

于 2012-10-18T21:28:04.203 回答
0

为每个 EditText 添加一个侦听器以了解文本何时更改(确保 EditText 强制执行最大长度为 1)。此侦听器的逻辑将检查文本是否为数字且长度为 1,然后它将转移焦点。这是代码:

EditText et1 = ...;
EditText et2 = ...;
EditText et3 = ...;
EditText et4 = ...;

et1.addTextChangedListener(new TextWatcher() {
   @Override
   public void onTextChanged(CharSequence s, int start, int before, int count) {
      if( s.length() == 1 && Character.isDigit(s.charAt(0)) ) {
         et2.requestFocus();
      }
   }

   @Override
   public void afterTextChanged(Editable e) { }

   @Override
   public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
});

et2.addTextChangedListener(new TextWatcher() {
   @Override
   public void onTextChanged(CharSequence s, int start, int before, int count) {
      if( s.length() == 1 && Character.isDigit(s.charAt(0)) ) {
         et3.requestFocus();
      }
   }

   @Override
   public void afterTextChanged(Editable e) { }

   @Override
   public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
});

et3.addTextChangedListener(new TextWatcher() {
   @Override
   public void onTextChanged(CharSequence s, int start, int before, int count) {
      if( s.length() == 1 && Character.isDigit(s.charAt(0)) ) {
         et4.requestFocus();
      }
   }

   @Override
   public void afterTextChanged(Editable e) { }

   @Override
   public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
});
于 2012-10-18T21:29:24.547 回答