我有: 1.协调员布局 2.appbar布局(协调器布局的子代) 3.Collapsing工具栏布局(app栏的子项) 4.NestedScrollView(协调员的孩子)
我希望将网格视图放在NestedScrollView
中,以便用户可以滚动整个屏幕空间。
我的问题是目前gridview占据NestedScrollView
的一小部分而不是NestedScrollView
的完整空间并在该部分内滚动,如下图所示:< / p>
正如您所看到的,我的gridview高度仅限于天蓝色的高亮显示部分,我希望它占据该图像下方的整个屏幕空间(这是我的折叠工具栏)。我尝试了不同的方法但没有任何效果。 我的xml文件是:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:id="@+id/app_bar"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="196dp"
android:background="#3f51b5"
app:contentScrim="@color/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/imageview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/index"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:id="@+id/gridView"
android:verticalSpacing="1dp"
android:horizontalSpacing="1dp"
android:numColumns="2"
android:stretchMode="columnWidth"/>
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|bottom"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email" />
答案 0 :(得分:12)
GridView
已内置滚动条,因此与NestedScrollView
冲突。您应该使用RecyclerView
GridLayoutManager
和appbar_scrolling_view_behavior
布局行为代替NestedScrollView
。
答案 1 :(得分:11)
我有同样的问题,以下对我有用。
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:fillViewport="true">
答案 2 :(得分:4)
是的,GridView
与NestedScrollView
冲突,正确的解决方案是使用RecyclerView
,但是我需要一种快速的解决方法来进行设置,并且遇到了一个解决方案使用扩展GridView
的自定义类:
https://gist.github.com/jiahuang/2591977
然后,您只需要用自定义类替换GridView
并按照Apoorv的答案设置NestedScrollView
的参数即可:
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:fillViewport="true">
答案 3 :(得分:2)
Apoorv Singh's answer帮助了我,但并不完全。您可以将GridView放在NestedScrollView中,但只显示第1行。您需要在NestedScrollView定义中添加android:fillViewport="true"
,以便正确显示所有内容。
但是,当我向下滚动时,它不会滚动到屏幕底部。我有一个10行的网格,屏幕上有多行,但我现在无法向下滚动查看它们。
答案: 这对我来说很有用。使用RecyclerView和GridLayoutManager而不是GridView。由于Recycler视图也与Collapsing工具栏兼容。当您在NestedScrollView中使用RecyclerView时,它运行良好。一切都正确,并正确滚动。