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>
【问题讨论】:
嵌套滚动View
s - 如 RecyclerView
s 或 ListView
s - 在常规 ScrollView
中总是会导致问题。如果您有权访问 UIParallaxScroll
的源代码,您可以尝试将其重构为使用 v4 支持库中的 NestedScrollView
。或者更改您的设计以将那些滚动的View
s 移动到其他地方。
问题***.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不滚动