将焦点更改为 EditText Android
Posted
技术标签:
【中文标题】将焦点更改为 EditText Android【英文标题】:Change Focus to EditText Android 【发布时间】:2011-07-22 18:07:56 【问题描述】:我的 Activity 中有 2 个 EditText,并将 maxLength
设置为 5。
现在我想将焦点设置为editText2
,如果editView1
中达到5的长度...
我试过了:
editView1.setOnKeyListener(new OnKeyListener()
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
if(editView1.getText().length() == 5)
editView2.requestFocus();
return false;
);
但它不会工作..
【问题讨论】:
【参考方案1】:这行得通
final EditText editText1 = (EditText) findViewById(R.id.editText1);
final EditText editText2 = (EditText) findViewById(R.id.editText2);
editText1.setOnKeyListener(new OnKeyListener()
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
if(editText1.getText().length() == 5)
editText2.requestFocus();
return false;
);
【讨论】:
所以我必须将我的 EditView 更改为 EditText 的?我会试试的,谢谢。 行不通...我认识到,如果我使用“退格”键,事件只会触发... 那是有线的。我在示例项目中尝试了该代码片段,并且完全按照您的要求进行了操作。在第 5 个键之后,它将焦点更改为另一个 EditText。也许您必须覆盖 OnKeyListener 中的其他方法之一。你试过了吗? Text 方法为 addTextChangedListener(new android.text.TextWatcher() );该对象具有三个方法onTextChanged,beforeTextChanged,afterTextChanged,我认为您需要使用afterTextChanged并将代码放在这里 if(editView1.getText().length() == 5) editView2.requestFocus(); @Prexx 我也有你的问题。 onKey 事件仅在我使用退格键时触发。你是怎么解决你的问题的?【参考方案2】:Marc Juschkeits 的帖子对我来说几乎是完美的。
但在我的情况下,我必须测试 keyevent 是否是一个动作,因为我在 edittext 中有一个长度相同的标准文本。
final EditText editText1 = (EditText) findViewById(R.id.editText1);
final EditText editText2 = (EditText) findViewById(R.id.editText2);
editText1.setOnKeyListener(new View.OnKeyListener()
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent)
if (keyEvent.getAction() == KeyEvent.ACTION_UP)
if (editText1.getText().length() == 5)
editText2.requestFocus();
return false;
);
【讨论】:
【参考方案3】:我认为请求焦点不适用于主线程。但我不确定。 这对我有用,
_edittext.post(new Runnable()
public void run()
_edittext.requestFocus();
);
【讨论】:
【参考方案4】:EdName.setOnKeyListener(new OnKeyListener()
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
System.out.println("Yes Bud");
if(EdName.length()== 5)
EdBin.requestFocus();
return false;
);
【讨论】:
【参考方案5】:在androidmanifest.xml文件的activity标签中添加如下代码:
android:windowSoftInputMode="stateHidden"
【讨论】:
以上是关于将焦点更改为 EditText Android的主要内容,如果未能解决你的问题,请参考以下文章
edittext.settext() 将键盘类型更改为默认值 [从 ?123 到 ABC]
将 android EditText 样式从矩形边框更改为下划线
以编程方式将 EditText 的输入类型从 PASSWORD 更改为 NORMAL,反之亦然