TextInputLayout EditText nextFocusRight 不能正常工作
TextInputLayout EditText nextFocusRight not working as should
我有两个并排的 TextInputLayout
元素:名字和姓氏。在它们下面我有另一个全宽 TextInputLayout
元素:email.
我正在尝试覆盖键盘上的下一步按钮,这样当在名字输入中单击下一步时,它应该转到姓氏输入并从那里转到电子邮件等。
现在的问题是,当我在键盘上按“下一步”时,它不会转到姓氏字段,而是转到下面的电子邮件。
这是我的 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
是否可以实现下一个焦点,或者这是一个错误还是我只是做错了什么?
更改为 --> android:nextFocusDown="@+id/register_input_lastname"
上面的答案是正确的,但我只需要添加一些东西,当我尝试时我没有把焦点放在下一行,所以除了上面的答案我还添加了一个属性
android:inputType="your input type here"
放置这个之后,我的编辑文本焦点转到了下一个
例子
android:inputType="text"//set any input type as per your requirement
android: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>
希望这对其他人有帮助:)
我在下面使用了这段代码,它就像魔术一样工作:)
其实诀窍是
android:imeOptions="actionNext"
android:nextFocusDown="@+id/tilAddress"
android:输入类型="text"
<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>
在我的例子中,来自 TextInputLayout
的 ID 是不够的。
为了做到这一点,我还必须为右侧字段 fragment_driver_zip_edit_text
设置 TextInputEditText
id:
android:nextFocusDown="@id/fragment_driver_zip_edit_text"
这是我的 UI:
这是 XML,使用 TextInputLayout
:
将焦点从 state
设置到 zip
字段
<!-- 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>
我有两个并排的 TextInputLayout
元素:名字和姓氏。在它们下面我有另一个全宽 TextInputLayout
元素:email.
我正在尝试覆盖键盘上的下一步按钮,这样当在名字输入中单击下一步时,它应该转到姓氏输入并从那里转到电子邮件等。
现在的问题是,当我在键盘上按“下一步”时,它不会转到姓氏字段,而是转到下面的电子邮件。
这是我的 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
是否可以实现下一个焦点,或者这是一个错误还是我只是做错了什么?
更改为 --> android:nextFocusDown="@+id/register_input_lastname"
上面的答案是正确的,但我只需要添加一些东西,当我尝试时我没有把焦点放在下一行,所以除了上面的答案我还添加了一个属性
android:inputType="your input type here"
放置这个之后,我的编辑文本焦点转到了下一个
例子
android:inputType="text"//set any input type as per your requirement
android: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>
希望这对其他人有帮助:)
我在下面使用了这段代码,它就像魔术一样工作:)
其实诀窍是
android:imeOptions="actionNext"
android:nextFocusDown="@+id/tilAddress"
android:输入类型="text"
<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>
在我的例子中,来自 TextInputLayout
的 ID 是不够的。
为了做到这一点,我还必须为右侧字段 fragment_driver_zip_edit_text
设置 TextInputEditText
id:
android:nextFocusDown="@id/fragment_driver_zip_edit_text"
这是我的 UI:
这是 XML,使用 TextInputLayout
:
state
设置到 zip
字段
<!-- 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>