【问题标题】:ScrollView in Android Nougat keeps scrolling to top when typing in EditText but works in LollipopAndroid Nougat 中的 ScrollView 在输入 EditText 时一直滚动到顶部,但在 Lollipop 中有效
【发布时间】:2020-10-15 16:40:57
【问题描述】:

Android ScrollView 布局只能包含一个子元素,因此在放入 ScrollView 元素之前,必须将多个子元素包裹在另一个布局元素中。

我有一个主 FrameView 包装一个 ScrollView 包装另一个 FrameView,里面有许多 EditText 元素。

布局看起来像这样:

<FrameLayout>
    <ScrollView>
        <FrameLayout>
            </EditText>
            </EditText>
        </FrameLayout>
    </ScrollView>
</FrameLayout>

这一切都是以编程方式完成的,而且效果很好。当软键盘出现时,最外层的框架布局和滚动视图被调整大小,内容在缩小的区域内完美滚动。当软键盘弹出时,它甚至会滚动到选定的编辑文本元素。

问题是,即使选定的编辑文本在软键盘上方可见,每次按下键时滚动视图都会自动滚动到顶部。我必须再次向下滚动到重点编辑文本,但它会随着软键盘的每次击键再次滚动到顶部。

我只有三个测试设备,一个牛轧糖和两个棒棒糖,这个问题只出现在牛轧糖上

是什么导致了这种奇怪的行为?

【问题讨论】:

    标签: android android-layout android-edittext scrollview android-softkeyboard


    【解决方案1】:

    解决此问题的一种方法是在我们更新 editText 中的值之前禁用滚动视图

     scrollview.setEnabled(false) 
    

    然后在更新editText后启用滚动视图

    scrollview.setEnabled(true)
    

    【讨论】:

    • 这种方法的问题是高度大于软键盘上方可见区域的多行 EditText 将保持隐藏状态。因此,必须允许滚动视图滚动才能进行此类调整。有没有办法限制滚动?
    • 另外,它不再可能以这种方式禁用滚动视图。
    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多