- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 8 个 TextInputLayout
字段的 ConstraintLayout
,每个字段都在垂直方向(如垂直 LinearLayout
)。每个在其 TextInputEditText
中都有这一行:
android:imeOptions="actionNext"
约束布局包含在 NestedScrollView
中。
这应该用作捕获注册数据的简单表单。当用户完成每个字段时,他们点击 Next
按钮,表单将垂直滚动到下一个字段。
这一切工作正常,直到用户完成倒数第二个字段。此时,当用户点击下一步时,表单既不滚动也不将焦点放在最后一个字段。该字段隐藏在软键盘后面,因此用户不知道它在那里。我可以手动滚动表单以显示它,但这不是我想要实现的行为。
这是 xml 的相关部分:
Activity :
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<fragment
android:id="@+id/onboarding_nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:defaultNavHost="false"
app:navGraph="@navigation/onboarding_nav_graph" />
</androidx.core.widget.NestedScrollView>
然后在 fragment 中,这里是最后两个 TextInputLayouts。其他人遵循类似的结构,所以为了简洁起见,我将省略它们,至少现在是这样:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/password_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:errorTextAppearance="@style/error_appearance"
app:layout_constraintTop_toBottomOf="@id/cell_layout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_percent="0.8"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/colorAccent"
style="@style/MyTextInputLayout">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/reg_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/enter_password"
android:maxLines="1"
android:inputType="textPassword"
android:imeOptions="actionNext"
android:text="@{registrationData.password}"
bind:regularTypeface='@{"raleway"}'
style="@style/MyTextInputEditText"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/password_confirm_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:errorTextAppearance="@style/error_appearance"
app:layout_constraintTop_toBottomOf="@id/password_layout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_percent="0.8"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/colorAccent"
style="@style/MyTextInputLayout">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/reg_password_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password_confirmation"
android:maxLines="1"
android:inputType="textPassword"
android:imeOptions="actionDone"
bind:regularTypeface='@{"raleway"}'
style="@style/MyTextInputEditText"/>
</com.google.android.material.textfield.TextInputLayout>
最后,在 AndroidManifest
中, Activity 声明如下:
<activity
android:name=".activities.OnboardingActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize"/>
无法弄清楚我错过了什么。如何让 ScrollView 显示最后一个字段而无需用户手动滚动该字段?
最佳答案
我想出了问题所在。请注意,最后两个 TextInputLayout
字段用于密码,并且 app:passwordToggleEnabled
都设置为 true
。
鉴于此状态,当在第一个 TextInputEditText
字段 (reg_password
) 上点击 Next
按钮时,我希望下一个对象把焦点放在 reg_password_confirm
上。但是当我在模拟器设置中打开 Show Layout Bounds
并仔细检查它时,我注意到获得焦点的对象是 reg_password
右侧的开关(图标形状像一只眼睛)。
修复非常简单。我没有使用 reg_password
block 中的 android:imeOptions="actionNext
,而是使用了 android:nextFocusForward="@id/reg_password_confirm"
。这会覆盖算法并将焦点显式切换到 reg_password_confirm
。
这也会导致 ScrollView 向下移动以显示 TextInputLayout
字段。
我希望这对某人有帮助。
关于android - actionNext 不会滚动显示最后一个 TextInputLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59430205/
这个问题在这里已经有了答案: “return” and “try-catch-finally” block evaluation in scala (2 个回答) 7年前关闭。 为什么method1返
我有一个动态列表,需要选择最后一项之前的项目。 drag your favorites here var lastLiId = $(".album
我想为每个线程执行特定操作,因此,我认为tearDown Thread Group 不起作用。 是否有任何替代方法可以仅在线程的最后一次迭代时运行“仅一次 Controller ”? 谢谢。 最佳答案
在我的书中它使用了这样的东西: for($ARGV[0]) { Expression && do { print "..."; last; }; ... } for 循环不完整吗?另外,do 的意义何
我想为每个线程执行特定操作,因此,我认为tearDown Thread Group 不起作用。 是否有任何替代方法可以仅在线程的最后一次迭代时运行“仅一次 Controller ”? 谢谢。 最佳答案
有没有可能 finally 不会被调用但应用程序仍在运行? 我在那里释放信号量 finally { _semParallelUpdates.Re
我收藏了 对齐的元素,以便它们形成两列。使用 nth-last-child 的组合和 nth-child(even) - 或任何其他选择器 - 是否可以将样式应用于以下两者之一:a)最后两个(假设
我正在阅读 Jon Skeet 的 C# in Depth . 在第 156 页,他有一个示例, list 5.13“使用多个委托(delegate)捕获多个变量实例化”。 List list = n
我在 AM4:AM1000 范围内有一个数据列表(从上到下有间隙),它总是被添加到其中,我想在其中查找和总结最后 4 个结果。但我只想找到与单独列相对应的结果,范围 AL4:AL1000 等于单元格
我最近编写了一个运行良好的 PowerShell 脚本 - 然而,我现在想升级该脚本并添加一些错误检查/处理 - 但我似乎被第一个障碍难住了。为什么下面的代码不起作用? try { Remove-
这个问题在这里已经有了答案: Why does "a == x or y or z" always evaluate to True? How can I compare "a" to all of
使用 Django 中这样的模型,如何检索 30 天的条目并计算当天添加的条目数。 class Entry(models.Model): ... entered = models.Da
我有以下代码。 public static void main(String[] args) { // TODO Auto-generated method stub
这个问题在这里已经有了答案: Why does "a == x or y or z" always evaluate to True? How can I compare "a" to all of
这个问题已经有答案了: Multiple returns: Which one sets the final return value? (7 个回答) 已关闭 8 年前。 我正在经历几个在工作面试中
$ cat n2.txt apn,date 3704-156,11/04/2019 3704-156,11/22/2019 5515-004,10/23/2019 3732-231,10/07/201
我可以在 C/C++ 中设置/禁用普通数组最后几个元素的读(或写)访问权限吗?由于我无法使用其他进程的内存,我怀疑这是可能的,但如何实现呢?我用谷歌搜索但找不到。 如果可以,怎样做? 因为我想尝试这样
我想使用在这里找到的虚拟键盘组件 http://www.codeproject.com/KB/miscctrl/touchscreenkeyboard.aspx就像 Windows 中的屏幕键盘 (O
我正在运行一个 while 循环来获取每个对话的最新消息,但是我收到了错误 [18-Feb-2012 21:14:59] PHP Warning: mysql_fetch_array(): supp
这个问题在这里已经有了答案: How to get the last day of the month? (44 个答案) 关闭 8 年前。 这是我在这里的第一篇文章,所以如果我做错了请告诉我...
我是一名优秀的程序员,十分优秀!