我有一个布局,我有4个圆形<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/four_pin_background"
android:inputType="number"
android:textAlignment="center"
android:maxLength="1"
android:imeOptions="actionNext"
android:cursorVisible="false"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/four_pin_background"
android:inputType="number"
android:textAlignment="center"
android:maxLength="1"
android:imeOptions="actionNext"
android:cursorVisible="false"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/four_pin_background"
android:inputType="number"
android:textAlignment="center"
android:maxLength="1"
android:imeOptions="actionNext"
android:cursorVisible="false"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/four_pin_background"
android:inputType="number"
android:textAlignment="center"
android:maxLength="1"
android:imeOptions="actionNext"
android:cursorVisible="false"/>
</LinearLayout>
来输入PIN码。
edittext
我想在输入第一个edittext
的号码后,它应自动转到下一个edittext
。
现在点击下一个{{1}}或点击软键盘上的下一个按钮后,我只能输入数字。
谁能帮助我怎么做?
答案 0 :(得分:1)
附加TextWatcher
检查所需的editText
输入长度,然后重点关注。
editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if (s.length() == PIN_LENGTH) {
focusNext();
}
}
});
答案 1 :(得分:1)
按照以下步骤操作,它会为您提供所需的结果: -
使用EditTexts
中的ID更新您的XML,如下所示: -
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<EditText
android:id ="@+id/firstET"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/four_pin_background"
android:inputType="number"
android:textAlignment="center"
android:maxLength="1"
android:imeOptions="actionNext"
android:cursorVisible="false"/>
<EditText
android:id ="@+id/secondET"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/four_pin_background"
android:inputType="number"
android:textAlignment="center"
android:maxLength="1"
android:imeOptions="actionNext"
android:cursorVisible="false"/>
</LinearLayout>
然后在你的JAVA代码中,
参考这些EditTexts
,并在您的onCreate()
方法中添加此代码,如: -
EditText firstET , secondET;
firstET = (EditText) findViewByID(R.id.firstET);
secondET = (EditText) findViewByID(R.id. secondET);
firstET.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// add a condition to check length here - you can give here length according to your requirement to go to next EditTexts.
if(firstET.getText().toString().trim().length() >2){
firstET.clearFocus();
firstET.requestFocus();
}
}
});
答案 2 :(得分:1)
只要此EditText的文本发生更改,就会将TextWatcher添加到调用其方法的列表中。
示例代码
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
// specify length of your editext here to move on next edittext
if(editText.getText().toString().trim().length()>=1){
NexteditText.requestFocus();
}
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});