问题"下一步"与生日选择器的IMEOption

时间:2014-05-21 09:10:55

标签: android datepicker android-edittext android-datepicker datepickerdialog

我这样做是为了注册屏幕。我有三个字段的电子邮件,生日和密码。 在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;在电子邮件编辑文本,它直接转到最后的密码。它会跳过第二个文本字段。

在场景中应该做些什么?

2 个答案:

答案 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字段时按下。