我这样做是为了注册屏幕。我有三个字段的电子邮件,生日和密码。 在birthdate编辑文本中,我正在显示生日选择器对话框。我不想让用户通过输入来更新生日。这就是为什么我把焦点放在" false"并可点击为" true"。
<LinearLayout
android:id="@+id/signup_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical" >
<EditText
android:id="@+id/email"
style="@style/big_centered_textfield_style"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@drawable/rounded"
android:hint="Email address 320"
android:inputType="textEmailAddress"
android:maxLines="1"
android:paddingBottom="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="5dp"
android:textSize="@dimen/normal_font" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/birthdate"
style="@style/big_centered_textfield_style"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/rounded"
android:clickable="true"
android:focusable="false"
android:hint="@string/birthdate"
android:inputType="date"
android:maxLines="1"
android:onClick="birthdateClicked"
android:paddingBottom="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="5dp"
android:textSize="@dimen/normal_font" >
</EditText>
<EditText
android:id="@+id/password"
style="@style/big_centered_textfield_style"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/rounded"
android:hint="@string/password"
android:inputType="textPassword"
android:maxLines="1"
android:paddingBottom="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="5dp"
android:textSize="@dimen/normal_font" >
</EditText>
</LinearLayout>
但是当用户按下&#34;下一步&#34;在电子邮件编辑文本,它直接转到最后的密码。它会跳过第二个文本字段。
在场景中应该做些什么?
答案 0 :(得分:0)
您可以使用xml标记android:nextFocusDown="@id/yourNextElementID"
来实现此目的。
在您的情况下,email
EditText
中的此类内容应该有效:
android:nextFocusDown="@+id/birthdate"
检查android documentation。
修改强>
可能有效的另一种解决方案是以编程方式执行此操作。它可以确保您创建对象并正确调用onClick
。
yourEmailEditText.setNextFocusDownId(R.id.birthdate);
答案 1 :(得分:0)
我使用此代码解决了这个问题。
realName.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT) {
birthdate.performClick();
}
return false;
}
});
我正在模拟生日的点击事件,因为它将显示生日选择器&#34;下一步&#34;在键盘显示为realname字段时按下。