scrollview中的Recyclerview

时间:2018-05-22 18:09:57

标签: android android-recyclerview android-scrollview

这是代码:

    <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/grey_f2"
    android:fillViewport="true"
    >
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/rv_achievement_badges"
        android:focusableInTouchMode="false"

        />
    <LinearLayout
        android:background="@color/white"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="25dp"
        >
        <com.sharesmile.share.views.LBTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hall_of_fame"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:textColor="@color/black_64"
            android:textSize="20sp"
            />
        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/rv_hall_of_fame"
            android:focusableInTouchMode="false"
            />
    </LinearLayout>
</LinearLayout>
</ScrollView>

问题是rv_hall_of_fame未显示所有项目。 尝试了nestedsrollview,viewport,canScrollVertically和setNestedScrollingEnabled,没有任何工作。你能让我知道吗。

2 个答案:

答案 0 :(得分:1)

您应该从linearlayout中删除第二个recyclerview。也许这就是你无法看到所有物品的原因。

编辑:

我认为你应该使用NestedScrollView。我在其中一个项目中遇到了同样的问题,我将代码更改为下面解决了我的问题。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/grey_f2"
android:fillViewport="true"
android:focusableInTouchMode="true">

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

<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/rv_achievement_badges"/>

<com.sharesmile.share.views.LBTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hall_of_fame"
android:layout_marginTop="10dp"
android:textColor="@color/black_64"
android:textSize="20sp"
android:background="@color/white"
android:paddingLeft="25dp"
android:paddingTop="36dp"/>

<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/rv_hall_of_fame"
android:background="@color/white"
android:layout_marginBottom="7dp"
android:paddingBottom="30dp"
android:paddingTop="30dp"
android:paddingLeft="25dp"
android:paddingRight="25dp"/>

</LinearLayout>

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

答案 1 :(得分:0)

RecyclerViewListView置于ScrollView内是不明智的。 Android并不知道如何处理用户事件。此外,在您的情况下,您在根RecyclerView内有两个ScrollView ...对于Android UI框架和用户来说都是疯狂的。

解决方案可能只使用一个处理滚动用户操作的RecyclerView,以及一个知道如何渲染您使用的所有内容的Adapter:成就徽章,名人堂标签,以及玩家。所以,你只需要一个RecyclerView,它就像魅力一样。