我必須實現一個應用程序,在該應用程序中,我爲輸入的PIN號碼和移動號碼設置了小的edittext
。每個編輯文本一次包含1個字符。
現在,當我運行這個應用程序時,我發現每個盒子都需要關注每個edittext
。
所以在這種情況下,可以先在字符先輸入後在下一個edittext中設置焦點,然後在第二個字符輸入後轉到第三個。
所以請幫我解決這個問題在第一個框中輸入字符後,將焦點轉到下一個框
這是佈局圖像。
我必須實現一個應用程序,在該應用程序中,我爲輸入的PIN號碼和移動號碼設置了小的edittext
。每個編輯文本一次包含1個字符。
現在,當我運行這個應用程序時,我發現每個盒子都需要關注每個edittext
。
所以在這種情況下,可以先在字符先輸入後在下一個edittext中設置焦點,然後在第二個字符輸入後轉到第三個。
所以請幫我解決這個問題在第一個框中輸入字符後,將焦點轉到下一個框
這是佈局圖像。
1. implements TextWatcher on EditTexts
,然後當你EDITTEXT的文本長度爲1。
2. Change focus on other EditText using
在其他的EditText呼叫requestFocus()
..
CODE:(此代碼是你的理解,它可能是在你的情況和你不同的需要)
public class LoginActivity extends Activity implements TextWatcher
{
.
.
.
editTextUName = (EditText) findViewById(R.id.edttextusername);
editTextUName.addTextChangedListener(this);
editTextPwd = (EditText) findViewById(R.id.edttextpassword);
editTextPwd.addTextChangedListener(this);
@Override
public void afterTextChanged(Editable s)
{
if (s.toString().length() == 1)
{
editTextPwd.requestFocus();
}
}
使用此代碼
final EditText EditText01 = (EditText) findViewById(R.id.editText01);
final EditText EditText02= (EditText) findViewById(R.id.editText02);
final EditText EditText03 = (EditText) findViewById(R.id.editText03);
final EditText EditText04 = (EditText) findViewById(R.id.editText04);
EditText01.requestFocus();
EditText01.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(final View v,
final boolean hasFocus) {
if (hasFocus) {
final InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is
// open
mgr.showSoftInput(EditText01,
InputMethodManager.SHOW_IMPLICIT);
}
}
});
EditText01.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(final View v, final int keyCode,
final KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
EditText01.requestFocus();
} else {
EditText02.requestFocus();
}
}
return false;
}
});
EditText02.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(final View v, final int keyCode,
final KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
EditText01.requestFocus();
} else {
EditText03.requestFocus();
}
}
return false;
}
});
EditText03.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(final View v, final int keyCode,
final KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
EditText02.requestFocus();
} else {
EditText04.requestFocus();
}
}
return false;
}
});
EditText04.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(final View v, final int keyCode,
final KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
EditText03.requestFocus();
}
}
return false;
}
});
你解決了你的問題嗎? – Jitendra
添加一個tex t改變聽衆
textView1.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
textView2.requestFocus();
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
這應該很好。 mPinFirst等是表示每個Pin條目的EditText。 還應該照顧退格。
mPinFirst.setOnKeyListener(onKeyListener);
mPinSecond.setOnKeyListener(onKeyListener);
mPinThird.setOnKeyListener(onKeyListener);
mPinFourth.setOnKeyListener(onKeyListener);
View.OnKeyListener onKeyListener = new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if(KeyEvent.KEYCODE_DEL != keyEvent.getKeyCode()) {
if (((ESEditText) view).getText().length() == 1)
if (view.focusSearch(View.FOCUS_RIGHT) != null) {
view.focusSearch(View.FOCUS_RIGHT).requestFocus();
return true;
}
}else{
((ESEditText) view).setText("");
if (view.focusSearch(View.FOCUS_LEFT) != null) {
view.focusSearch(View.FOCUS_LEFT).requestFocus();
return true;
}
}
return false;
}
};
實施TextWatcher您的EditText並獲得輸入的字符的長度時,其1只將焦點轉到下一個視圖。 – user370305
你能給我例 –
檢查http://www.technotalkative.com/android-about-edittext-textwatcher/ – GAMA