当我按下“下一步”时,用户 EditText 上的焦点必须移至密码。然后,从密码,它必须向右移动,依此类推。你能帮助我如何编码吗?
<LinearLayout android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="User Name*" /> <EditText android:id="@+id/txt_User" android:layout_width="290dp" android:layout_height="33dp" android:singleLine="true" /> </LinearLayout> <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Password*" /> <EditText android:id="@+id/txt_Password" android:layout_width="290dp" android:layout_height="33dp" android:singleLine="true" android:password="true" /> <TextView android:id="@+id/confirm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Password*" /> <EditText android:id="@+id/txt_Confirm" android:layout_width="290dp" android:layout_height="33dp" android:singleLine="true" android:password="true" /> </LinearLayout>
焦点移动基于一种算法,该算法在给定方向上找到最近的邻居。在极少数情况下,默认算法可能与开发人员的预期行为不匹配。
使用以下 XML 属性更改定向导航的默认行为:
android:nextFocusDown="@+id/.." android:nextFocusLeft="@+id/.." android:nextFocusRight="@+id/.." android:nextFocusUp="@+id/.."
除了定向导航,您还可以使用标签导航。为此,您需要使用
android:nextFocusForward="@+id/.."
要使特定视图成为焦点,请致电
view.requestFocus()
要收听某些变化的焦点事件,请使用View.OnFocusChangeListener
View.OnFocusChangeListener
您可以使用它android:imeOptions来处理键盘上的那个额外按钮。
android:imeOptions
您可以在与编辑器关联的 IME 中启用其他功能,以改进与您的应用程序的集成。这里的常量对应于imeOptions定义的常量。
imeOptions 的常量包括各种动作和标志,请参阅上面的链接了解它们的值。
值示例
下一步行动:
操作键执行“下一个”操作,将用户带到下一个接受文本的字段。
行动完成:
操作键执行“完成”操作,通常意味着无需输入任何内容,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:maxLines="1" 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:maxLines="1" android:ems="10" /> </RelativeLayout>
如果您想收听 imeoptions 事件,请使用TextView.OnEditorActionListener.
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; } });