ScrollView系列:ScrollView自动滑动到底部的bug
Posted zhangjin1120
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ScrollView系列:ScrollView自动滑动到底部的bug相关的知识,希望对你有一定的参考价值。
- 复现bug,把下面的代码复制,运行下,就会发现ScrollView自动滑动到底部了。把WebView换成RecyclerView也是一样的。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="#ff0000"
android:gravity="center_horizontal|bottom"
android:text="tv1" />
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="#00ff00"
android:gravity="center_horizontal|bottom"
android:text="tv2" />
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="#0000ff"
android:gravity="center_horizontal|bottom"
android:text="tv3" />
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_gravity="center_horizontal"
android:background="#ffff00" />
</LinearLayout>
</ScrollView>
解决方案:
在ScrollView的直接子View中添加如下代码:
android:descendantFocusability="blocksDescendants"
完整代码如下:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical">
...
</LinearLayout>
</ScrollView>
以上是关于ScrollView系列:ScrollView自动滑动到底部的bug的主要内容,如果未能解决你的问题,请参考以下文章
Android零基础入门第61节:滚动视图ScrollView
ScrollView中存在EditText,焦点变化引发自动滚动问题
启用自动布局时,在嵌入式 ScrollView 中未检测到滚动