【问题标题】:ScrollView scrolling down and suddenly scrolling up back when tapping on EditText to have focus当点击 EditText 以获得焦点时,ScrollView 向下滚动并突然向上滚动
【发布时间】:2015-04-23 11:16:40
【问题描述】:

我有一个 ScrollView。在其中,我有类似卡片的布局,其中包含 EditTexts。我的问题是当我向上滚动 ScrollView 并点击其中一张卡片中的一个 EditText 时,ScrollView 首先向下滚动,然后突然向上滚动,就像 EditText 被 SoftKeyboard 覆盖一样。仅当 EditText 中存在焦点时才会发生这种情况。如果已经有焦点,则仅当 EditText 被 SoftKeyboard 覆盖时才会重新排列视图。

我理解在 EditText 被滚动时 ScrollView 的向上滚动 用软键盘覆盖。但是,为什么滚动视图试图重新排列 EditText 的位置,即使它没有被覆盖 软键盘?

用户仍然可以看到他正在输入的内容。但是,这会损害用户体验。

我正在为“windowsSoftInputMode”使用“adjustPan”。但是,我已经尝试了此属性中可用的任何内容。是一样的。

我什至尝试使用 ScrollView 作为根容器和一堆 EditText 在单独的布局中进行复制。但是,它工作正常。

最奇怪的是向下滚动并突然向上滚动(如上所述)不会发生在 最上面的卡片。

我想了解的是,当用户在没有焦点的情况下点击时,如果 EditText 必须请求 requestFocus,那么 ScrollView 上的视图如何重新排列。

如果你以前遇到过这种怪事,请告诉我。

【问题讨论】:

  • 如果有人对我的问题投了反对票,他们应该有意识对此给出一些解释!!!。

标签: android android-layout uiscrollview


【解决方案1】:

如果有人遇到过这种情况,这是我在病了将近 2 天后发现的情况。

发生这种情况的原因是我正在使用 translationY 为卡片的移动设置动画。并且当卡片的 translateY 值与容器内定义的卡片的 实际位置(包括 topMargin 和高度)不同相同时,当您将焦点放在进入这种容器内的 EditText,会发生 ScrollView(这是卡片的根容器)的突然移动(将 EditText 推到屏幕底部,然后将该 EditText 视图推回 SoftKeyboard 的顶部)。

我仍然不知道为什么会这样。但是,我确实相信 requestFocus 方法的实现与 translationY 值 有关,以确保 View 位于 SoftKeyboard 之上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2021-09-08
    • 2015-12-16
    相关资源
    最近更新 更多