当活动打开时,它会显示RecyclerView布局的顶部,而不是活动布局的顶部。
活动布局.xml文件:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="20dp"
android:paddingTop="20dp">
...
<RelativeLayout/>
<View />
<LinearLayout/>
...
<android.support.v7.widget.RecyclerView
android:id="@+id/venue_place_info_gallery_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"/>
</LinearLayout>
</ScrollView>
活动onCreate:
RecyclerView galleryRecyclerView = (RecyclerView) findViewById(R.id.venue_place_info_gallery_recycler_view);
galleryRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(gridLayoutColumns, StaggeredGridLayoutManager.VERTICAL));
VenueGalleryAdapter venueGalleryAdapter = new VenueGalleryAdapter(VenuePlaceInfoActivity.this, images);
galleryRecyclerView.setAdapter(venueGalleryAdapter);
适配器非常简单。它在构造函数中接收图像作为参数,以后不能更改数据。 我曾尝试将各种设置应用于RecyclerView布局,但无论是否有它们都可以使用相同的设置。例如:
galleryRecyclerView.setNestedScrollingEnabled(false);
galleryRecyclerView.setHasFixedSize(true);
galleryRecyclerView.setLayoutFrozen(true);
galleryRecyclerView.setPreserveFocusAfterLayout(false);
更新
我在answer of another question找到了有关该主题的更多信息。这完全是因为即使将setNestedScrollingEnabled设置为true,ScrollView和RecyclerView也无法生存在一起。但它仍然没有给我解决我的问题。我需要在图库RecyclerView上面放一些东西,我想向下滚动所有图像(不要将它们放在容器中)。
答案 0 :(得分:0)
如果你希望你的布局看起来不错,我会使用一个带有AppBarLayout的CoordinatorLayout作为其中的第一个元素,将RecyclerView作为第二个元素。在AppBarLayout中,您应该放置您想要在RecyclerView上方的任何内容。类似的东西:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/white">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:elevation="0dp">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways"
app:titleEnabled="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical"
android:paddingTop="20dp"
app:layout_collapseMode="parallax">
<!-- stuff you want above your recyclerview -->
</LinearLayout>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>
</LinearLayout>
有人在这里做类似的事情,而不是在appbarlayout中使用工具栏,你可以使用你喜欢的任何视图布局。 AppBarLayout是一个扩展的Vertical LinearLayout:http://www.basagee.tk/handling-scrolls-with-coordinatorlayout/
答案 1 :(得分:0)
只需在您的活动/片段根目录布局上添加以下标记,就可以了。
android:descendantFocusability="blocksDescendants"