我想知道是否有办法将 EditText 分组,只能在一组中进行遍历。
问题在于我依赖于到达第一组的末尾并使用EditorInfo.IME_ACTION_DONE
来触发某个操作。
EditText 的内部组位于 LinearLayout 内。
答案 0 :(得分:1)
将文本框放在布局(线性或相对)中,只放置要创建组的EditText。布局将充当组。在每个Edittext xml上添加它 -
android:maxLines="1"
如果它不起作用,你可以处理焦点。
焦点处理 焦点移动基于在给定方向上找到最近邻居的算法。在极少数情况下,默认算法可能与开发人员的预期行为不匹配。
使用以下XML属性更改方向导航的默认行为:
android:nextFocusDown="@+id/.."
android:nextFocusLeft="@+id/.."
android:nextFocusRight="@+id/.."
android:nextFocusUp="@+id/.."
除了定向导航,您还可以使用标签导航。为此你需要使用
android:nextFocusForward="@+id/.."
要获得关注的特定视图,请致电
view.requestFocus()
要收听某些更改焦点事件,请使用View.OnFocusChangeListener
键盘按钮
您可以使用android:imeOptions来处理键盘上的额外按钮。
您可以在与编辑器关联的IME中启用其他功能,以改善与应用程序的集成。这里的常量对应于imeOptions定义的常量。 imeOptions的常量包括各种动作和标志,请参阅上面的链接了解它们的值。
价值示例
ActionNext:
操作键执行" next"操作,将用户带到将接受文本的下一个字段。 ActionDone:
操作键执行"完成"操作,通常意味着没有什么可以输入,IME将被关闭。
代码示例:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="32dp"
android:layout_marginTop="16dp"
android:imeOptions="actionNext"
android:singleLine="true"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="24dp"
android:imeOptions="actionDone"
android:singleLine="true"
android:ems="10" />
</RelativeLayout>
如果您想收听imeoptions事件,请使用TextView.OnEditorActionListener。
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
performSearch();
return true;
}
return false;
}
});
修改强> 对于动态编辑文本,您可以尝试..
EditText etCurrent;
在每个EditText上设置OnTouchlistener:
valueET.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (etCurrent != null) {
if (etCurrent.getId() != v.getId()) {
if (!check(etCurrent.getId())) {
etCurrent.setSelection(0,
etCurrent.getText().toString().length());
return true;
} else {
etCurrent = (EditText) v;
}
}
} else {
etCurrent = (EditText) v;
}
}
return false;
}
});