Android ScrollView会自动滚动到视图的底部

时间:2016-01-20 12:59:02

标签: android

我创建了一个包含一个地图,图像和其他文本视图的活动,并为其添加了“scrollview”标签...但是在活动开始后它会自动滚动到页面的末尾...请告诉我为什么会发生这种情况以及如何阻止它结束,以便我可以自己滚动。

这是我的代码:

<?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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:orientation="vertical"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.radikallab.earch.DetailsActivity"
android:background="@drawable/background10">


<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:text="Title"
        android:textStyle="italic"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/background4"
        android:id="@+id/iv"/>


    <TextView
        android:id="@+id/rat"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:text="Title"
        android:textStyle="italic"/>

    <TextView
        android:id="@+id/addr"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="17sp"
        android:text="Title"
        android:textStyle="italic"/>

    <WebView

        android:layout_width="match_parent"
        android:layout_height="500dp"
        android:layout_marginTop="10dp"
        android:id="@+id/webView"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

6 个答案:

答案 0 :(得分:51)

我也面临同样的场景,但是将descendantFocusability属性添加到包含LinearLayout的ScrollView,解决了我的问题。

android:descendantFocusability="blocksDescendants"

您可以将其用作:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants" >

答案 1 :(得分:4)

在线性布局中设置android:focusableInTouchMode="true"

<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:focusableInTouchMode="true"
android:layout_height="match_parent">

答案 2 :(得分:1)

实际上我找到了一个简单的答案,只需在相关的java文件中添加“setfocusable(false)”.....在这种情况下,“webview”首先将其滚动到那里....所以添加“webview。 setfocusable(false)“在关联的webview java类中。

答案 3 :(得分:1)

如果您确实想使用Java手动设置它; 试试这个-确实有效: 使用FOCUS_UP滚动到顶部,使用FOCUS_DOWN滚动到底部。

scrollView.post(new Runnable() {
                        public void run() {
                            scrollView.fullScroll(View.FOCUS_UP);
                        }

答案 4 :(得分:0)

实际上,如果ScrollView内的孩子支持滚动,ListViewWebView,则会遇到滚动问题。

我找到了一个类似的问题和一些解决方法。它支持垂直滚动,但如果HTML页面超过WebView宽度,则不支持水平滚动。

请参阅this以供参考。

答案 5 :(得分:0)

对我有用的是Punit Sharma和FAЯAƸ的答案的组合。

我的问题是另一个可滚动视图(NestedScrollView)内的一个可滚动视图(RecyclerView)-与ScrollView内的WebView相同。

将内部可滚动视图包装在属性为FragmentLayout的{​​{1}}内,解决了我的自底滚动问题。

android:descendantFocusability="blocksDescendants"