我有两个TextInputLayout
元素并排:名字和姓氏。在它们下面,我有另一个全宽TextInputLayout
元素:电子邮件。
我试图覆盖键盘上的下一个按钮,这样当在firstname输入中单击Next时,它应该转到lastname输入并从那里转到电子邮件等。
现在的问题是,当我在键盘上按下Next时,它不会进入姓氏字段,而是转到它下面的电子邮件。
这是我的xml文件的一部分,我有三个输入:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center_horizontal"
android:baselineAligned="false">
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_firstname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<EditText
android:id="@+id/register_input_firstname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_firstname"
android:inputType="textCapSentences"
android:nextFocusForward="@+id/register_input_lastname"
android:nextFocusRight="@+id/register_input_lastname" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_lastname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<EditText
android:id="@+id/register_input_lastname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_lastname"
android:inputType="textCapSentences"
android:nextFocusDown="@+id/register_input_email" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_email"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/register_input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_email"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
我也尝试定位TextInputLayout
而不是EditText
,但它没有效果。
下一个焦点甚至可以用TextInputLayout
进行,还是一个错误,或者我只是做错了什么?
答案 0 :(得分:8)
更改为此 - &gt;机器人:nextFocusDown =&#34; @ + ID / register_input_lastname&#34;
答案 1 :(得分:7)
我在下面使用了这段代码,它像魔术一样工作:)
实际上诀窍是
机器人:imeOptions =&#34; actionNext&#34;
机器人:nextFocusDown =&#34; @ + ID / tilAddress&#34;
机器人:的inputType =&#34;文本&#34;
<android.support.design.widget.TextInputLayout
android:id="@+id/tilSchoolName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_small">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_small"
android:textColor="@color/colorTxt"
android:maxLines="1"
android:imeOptions="actionNext"
android:nextFocusDown="@+id/tilAddress"
android:inputType="text"
android:hint="School Name" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/tilAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_small"
android:textColor="@color/colorTxt"
android:maxLines="1"
android:hint="Address" />
</android.support.design.widget.TextInputLayout>
答案 2 :(得分:4)
上面的答案是正确的,但我只需要添加一些东西,当我尝试我没有得到焦点到下一行所以我再添加一个属性,除了上述答案
android:inputType =“你的输入类型在这里”
放完之后我把我的编辑文本重点放到了下一个
例如
android:inputType =“text”//根据您的要求设置任何输入类型
机器人:nextFocusDown = “@ + ID / NEXT_ID”
编辑文本的完整示例
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
android:textColorHint="@color/hint">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:id="@id/first_name_edt"
android:nextFocusDown="@+id/last_name_edt"
android:imeOptions="actionNext"
android:inputType="text"
android:hint="@string/str_first_name" />
</android.support.design.widget.TextInputLayout>
希望这会有助于其他人:)
答案 3 :(得分:0)
就我而言,来自 TextInputLayout
的 ID 是不够的。
为了做到这一点,我还必须为右侧字段 TextInputEditText
设置 fragment_driver_zip_edit_text
id:
android:nextFocusDown="@id/fragment_driver_zip_edit_text"
这是我的用户界面:
这是使用 state
将焦点从 zip
设置为 TextInputLayout
字段的 XML:
<!-- STATE -->
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/fragment_driver_state"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@+id/fragment_driver_zip"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:nextFocusDown="@id/fragment_driver_zip_edit_text"
android:selectAllOnFocus="true"
android:textAllCaps="true" />
</com.google.android.material.textfield.TextInputLayout>
<!-- ZIP -->
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/fragment_driver_zip"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBaseline_toBaselineOf="@id/fragment_driver_state"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/fragment_driver_state">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/fragment_driver_zip_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:selectAllOnFocus="true"
android:textAllCaps="true" />
</com.google.android.material.textfield.TextInputLayout>