当我没有在Android中设置nextFocusDown时,如何获得EditText的下一个焦点


<LinearLayout
android:id="@+id/loginInputs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/txtUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:ems="10"
android:hint="User Name"
android:imeOptions="actionNext"
android:text="" />
<EditText
android:id="@+id/txtPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:ems="10"
android:inputType="textPassword"
android:text="" />
</LinearLayout>

我想在代码中获取 txt用户名的下一个焦点。如果我设置android:nextFocusDown属性,我可以通过使用txtUsername.getNextFocusDownId();来获取它。(当软键输入按下焦点时移动到下一个向下焦点(我想知道是否有任何方法可以在不设置焦点属性的情况下通过代码获取默认的下一个焦点。

我可以通过为所有编辑文本设置焦点属性来获得相同的功能。但我觉得应该有更好的方法。

P.W.我想根据下一个重点做一些逻辑。我不想改变焦点。

根据您的 P.W. 和您的问题评论,我建议您使用View.OnFocusChangeListener

https://developer.android.com/reference/android/view/View.OnFocusChangeListener.html

将侦听器附加到 EditText(或层次结构中可能接收焦点的任何其他视图(

txtUsername.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
// do some logic here, removing focus if necessary
}
});

这样,您可以字段显示焦点更改事件并处理要执行的任何其他逻辑。 如果需要,还可以从此对象中删除焦点并将其设置在其他位置。

Android 将尽最大努力引导焦点,但如果未定义焦点属性,它并不完美。 作为开发人员,我们的工作是填补空白并创造最佳的导航体验。

有关详细信息,请参阅使应用程序更易于访问。