Android:Scrollview 不再滚动

Posted

技术标签:

【中文标题】Android:Scrollview 不再滚动【英文标题】:Android: Scrollview doesn't scroll anymore 【发布时间】:2016-03-21 10:05:10 【问题描述】:

我有一个滚动良好的滚动视图,直到我在里面添加元素并且它停止滚动。我尝试了很多东西,包括将高度更改为 fill_parent 或 wrap_content,但不知何故我找不到哪个值阻止了滚动。任何人都可以帮忙吗?这是我的布局:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:id="@+id/bg_layout"
android:fitsSystemWindows="false"
android:background="@drawable/detail_background"
tools:context="com.kalianey.oxapp.views.fragments.ProfileFragment">

    <com.kalianey.oxapp.utils.UIParallaxScroll //extends ScrollView
    android:id="@+id/scroller"
    android:layout_
    android:layout_
    android:fillViewport="true"
    app:headerView="@+id/layout_top">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_
        android:layout_
        android:weightSum="1"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_
            android:layout_
            android:layout_weight="0.4"
            android:id="@+id/cover_container">

            <com.kalianey.oxapp.utils.UICircularImage
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:id="@+id/image_view"
                android:layout_
                android:layout_
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="50dp"
                android:layout_marginBottom="5dp"
                app:line_color="@android:color/white"
                app:line_color_press="@color/theme_color"
                app:line_
                app:padding="0dp" />

            <TextView
                android:id="@+id/title"
                android:layout_
                android:layout_
                android:fontFamily="sans-serif-light"
                android:gravity="center"
                android:paddingLeft="16dp"
                android:paddingTop="10dp"
                android:paddingRight="16dp"
                android:text="@string/detail_title_placeholder"
                android:textSize="@dimen/textsize_xlarge"
                android:layout_below="@+id/image_view"
                android:textColor="@android:color/white"/>

            <TextView
                android:id="@+id/sumary"
                android:layout_below="@+id/title"
                android:layout_
                android:layout_
                android:layout_gravity="center_vertical"
                android:fontFamily="sans-serif-light"
                android:gravity="center"
                android:paddingBottom="16dp"
                android:text="@string/sumary_placeholder"
                android:textColor="@color/white_transparent"
                android:textSize="@dimen/textsize_medium_small" />

            <LinearLayout
                android:id="@+id/statistics"
                android:layout_below="@+id/sumary"
                android:background="@color/gray_transparent"
                android:layout_
                android:layout_
                android:orientation="horizontal" >

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:layout_weight="1"
                    android:padding="5dp"
                    android:orientation="vertical"
                    android:background="@drawable/border_right" >

                    <ImageButton
                        android:layout_
                        android:layout_
                        android:id="@+id/imageButtonFriend"
                        android:layout_gravity="center_horizontal"
                        android:src="@drawable/user"
                        android:background="@android:color/transparent"/>

                </LinearLayout>

                <LinearLayout
                    android:layout_
                    android:layout_
                    android:padding="5dp"
                    android:layout_weight="1"
                    android:background="@color/gray_transparent"
                    android:orientation="vertical" >

                    <ImageButton
                        android:layout_
                        android:layout_
                        android:id="@+id/imageButtonFavorite"
                        android:layout_gravity="center_horizontal"
                        android:src="@drawable/star"
                        android:background="@android:color/transparent"/>

                </LinearLayout>

            </LinearLayout>

        </RelativeLayout>

        <LinearLayout
            android:id="@+id/informations_container"
            android:layout_
            android:layout_
            android:layout_weight="0.6"
            android:orientation="vertical"
            android:background="@android:color/white"
            android:layout_below="@+id/cover_container"
            android:gravity="center"
            android:padding="10dp">

            <com.kalianey.oxapp.utils.UITabs
                android:id="@+id/toggle"
                android:layout_gravity="center"
                android:layout_
                android:layout_
                android:orientation="horizontal"
                android:layout_below="@+id/informations_container">

                <RadioButton
                    android:id="@+id/toggle1"
                    android:layout_
                    android:layout_
                    android:layout_weight="1"
                    android:padding="5dp"
                    android:checked="true"
                    android:text="@string/description_tab_1"
                    style="@style/UITabs" />

                <RadioButton
                    android:id="@+id/toggle2"
                    android:layout_
                    android:layout_
                    android:layout_weight="1"
                    android:padding="5dp"
                    android:text="@string/description_tab_2"
                    android:layout_gravity="bottom"
                    style="@style/UITabs" />

            </com.kalianey.oxapp.utils.UITabs>

            <TextView
                android:layout_
                android:layout_
                android:id="@+id/profile_photo_text"
                android:text="@string/profile_photo_text"
                android:layout_gravity="left"
                android:layout_marginBottom="10dp"
                android:layout_marginLeft="@dimen/activity_horizontal_margin"
                android:layout_marginRight="@dimen/activity_horizontal_margin"
                android:layout_marginTop="20dp" />

            <TextView
                android:id="@+id/noPhotos"
                android:layout_below="@+id/profile_photo_text"
                android:layout_
                android:layout_
                android:layout_gravity="center_vertical"
                android:fontFamily="sans-serif-light"
                android:gravity="center"
                android:text="@string/noPhotos"
                android:textColor="@color/gray_light"
                android:textSize="@dimen/textsize_medium_small"
                android:textStyle="italic"
                android:
                android:visibility="gone"/>


            <android.support.v7.widget.RecyclerView
              android:id="@+id/grid_view"
              android:layout_
              android:layout_
              app:layoutManager="StaggeredGridLayoutManager"
                android:layout_marginLeft="@dimen/activity_horizontal_margin"
                android:layout_marginRight="@dimen/activity_horizontal_margin"/>

            <TextView
                android:layout_
                android:layout_
                android:id="@+id/profile_friend_text"
                android:text="@string/profile_friend_text"
                android:layout_gravity="left"
                android:layout_marginTop="20dp"
                android:layout_marginLeft="@dimen/activity_horizontal_margin"
                android:layout_marginRight="@dimen/activity_horizontal_margin"/>

            <TextView
                android:id="@+id/noFriends"
                android:layout_below="@+id/profile_friend_text"
                android:layout_
                android:layout_
                android:layout_gravity="center_vertical"
                android:fontFamily="sans-serif-light"
                android:gravity="center"
                android:text="@string/noFriends"
                android:textColor="@color/gray_light"
                android:textSize="@dimen/textsize_medium_small"
                android:textStyle="italic"
                android:minHeight="50dp"
                android:visibility="gone"/>

            <org.lucasr.twowayview.TwoWayView
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:id="@+id/friends_list"
                style="@style/TwoWayView"
                android:layout_
                android:layout_
                android:drawSelectorOnTop="false"
                tools:context=".MainActivity"
                android:paddingTop="10dp"
                android:paddingBottom="10dp"
                android:layout_marginLeft="@dimen/activity_horizontal_margin"
                android:layout_marginRight="@dimen/activity_horizontal_margin"/>

            <se.emilsjolander.stickylistheaders.StickyListHeadersListView
                android:id="@+id/questions_list"
                android:layout_
                android:layout_
                android:visibility="gone" />

        </LinearLayout>

    </LinearLayout>

</com.kalianey.oxapp.utils.UIParallaxScroll>

<!-- "ActionBar"  -->

</RelativeLayout>

【问题讨论】:

嵌套滚动 Views - 如 RecyclerViews 或 ListViews - 在常规 ScrollView 中总是会导致问题。如果您有权访问 UIParallaxScroll 的源代码,您可以尝试将其重构为使用 v4 支持库中的 NestedScrollView。或者更改您的设计以将那些滚动的Views 移动到其他地方。 问题***.com/questions/14076195/…的可能重复。 @MikeM.:所以我改用 NestedScrollView,结果很奇怪:在模拟器和手机上它现在工作正常(顺便谢谢!),但在平板电脑上它仍然没有t 滚动...知道为什么吗? 嗯,这很有趣。我想不出任何理由,我的头顶。我还没有为平板电脑做过任何 UI,但我认为它应该在那里也能正常工作。 【参考方案1】:

看看下面的 xml 代码,即使它包含回收器视图,它也会帮助您构建带有滚动的屏幕。

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/container"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_>


<android.support.v4.widget.NestedScrollView
        android:layout_
        android:layout_
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:paddingTop="24dp">

        <android.support.v7.widget.CardView
                android:layout_
                android:layout_
                android:layout_marginBottom="16dp"
                android:layout_marginLeft="16dp"
                android:layout_marginRight="16dp">
            <LinearLayout
                    android:layout_
                    android:layout_
                    android:orientation="vertical">
                <TextView
                        android:layout_
                        android:layout_
                        android:textSize="25dp"
                        android:gravity="center_horizontal"
                        android:textStyle="bold"
                        android:text=" " />
                <android.support.v7.widget.RecyclerView
                        android:id="@+id/rcy1"
                        android:layout_
                        android:layout_
                        android:numColumns="4"
                        android:scrollbars="vertical"
                        android:adjustViewBounds="true"
                        android:gravity="center_horizontal"
                        android:horizontalSpacing="1dp"
                        android:padding="1dp"
                        android:background="@color/white"
                        android:stretchMode="columnWidth"
                        android:verticalSpacing="1dp"/>

            </LinearLayout>
        </android.support.v7.widget.CardView>
        <android.support.v7.widget.CardView
                android:layout_
                android:layout_
                android:layout_marginBottom="16dp"
                android:layout_marginLeft="16dp"
                android:layout_marginRight="16dp">
            <LinearLayout
                    android:layout_
                    android:layout_
                    android:orientation="vertical">

                <android.support.v7.widget.RecyclerView
                        android:id="@+id/rcy2"
                        android:layout_
                        android:layout_
                        android:layout_marginTop="10dp"
                        android:numColumns="3"
                        android:scrollbars="vertical"
                        android:adjustViewBounds="true"
                        android:gravity="center_horizontal"
                        android:horizontalSpacing="1dp"
                        android:padding="1dp"
                        android:background="@color/white"
                        android:stretchMode="columnWidth"
                        android:verticalSpacing="1dp"/>

            </LinearLayout>
        </android.support.v7.widget.CardView>

    </LinearLayout>

</android.support.v4.widget.NestedScrollView>

</android.support.design.widget.CoordinatorLayout>

您可以在此使用您想要的元素。也可以将基本 CoordinatorLayout 更改为 LinearLayout 或 RelativeLayout。另外不要忘记在 build.gradle 文件的依赖项部分添加以下支持。

compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:design:23.2.0'
compile 'com.android.support:cardview-v7:23.2.0'
compile 'com.android.support:recyclerview-v7:23.2.0'

【讨论】:

以上是关于Android:Scrollview 不再滚动的主要内容,如果未能解决你的问题,请参考以下文章

android ScrollView+GridView GridView不滚动

使用 Scrollview 滚动的背景

Android ScrollView在滚动中调用scrollTo(0,0)回到顶部无效

Android学习02

检测滚动视图到达顶部 - Android

scrollView 中scrollView 的水平滚动 - 小问题