Ret*_*lai 23 android android-edittext

用户只能在编辑文本中输入一个数字.如果他在edtText1中输入值,我希望光标自动移动到edtText2,依此类推.用户可以编辑他/她已经输入的文本.我尝试了以下方式.
edtPasscode1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (edtPasscode1.getText().length() == 1)
edtPasscode2.requestFocus();
return false;
}
});
edtPasscode2.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (edtPasscode2.getText().length() == 1)
edtPasscode3.requestFocus();
return false;
}
});
edtPasscode3.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (edtPasscode3.getText().length() == 1)
edtPasscode4.requestFocus();
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
如果用户编辑文本,光标将移动到其他一些editTexts并且不能按照需要工作.我怎样才能实现上述目标?
Ami*_*pta 34
尝试使用TextWatcher而不是onKeyListener
B'coz如果想编辑你的密码,那么TextWatcher会给你更多的方法来处理..
编辑: -
StringBuilder sb=new StringBuilder();
edtPasscode1.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if(sb.length()==0&edtPasscode1.length()==1)
{
sb.append(s);
edtPasscode1.clearFocus();
edtPasscode2.requestFocus();
edtPasscode2.setCursorVisible(true);
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
if(sb.length()==1)
{
sb.deleteCharAt(0);
}
}
public void afterTextChanged(Editable s) {
if(sb.length()==0)
{
edtPasscode1.requestFocus();
}
}
});
Run Code Online (Sandbox Code Playgroud)
希望这项工作.
设置android:maxLength="1"为ExitTextxml中的所有内容
请尝试以下代码
edtxt1 = (EditText) findViewById(R.id.edtxt_phonenumber_one);
edtxt2 = (EditText) findViewById(R.id.edtxt_phonenumber_two);
edtxt3 = (EditText) findViewById(R.id.edtxt_phonenumber_three);
edtxt1.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (s.length() ==1) {
edtxt2.requestFocus();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
edtxt2.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (s.length() == 1) {
edtxt3.requestFocus();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
edtxt3.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (s.length() == 1) {
edtxt1.requestFocus();
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
Run Code Online (Sandbox Code Playgroud)
这应该工作
| 归档时间: |
|
| 查看次数: |
35963 次 |
| 最近记录: |