滚动视图中的 Recyclerview
Recyclerview in 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,但没有任何效果。可以告诉我吗
将 RecyclerView
或 ListView
放在 ScrollView
中是不明智的。 Android 不知道如何处理用户事件。此外,在您的情况下,根 ScrollView
中有两个 RecyclerView
...对于 Android UI 框架和用户来说都是疯狂的。
一种解决方案可能是只使用一个 RecyclerView
来处理滚动用户操作,以及一个 Adapter
知道如何呈现您使用的所有内容:成就徽章、名人堂标签、和球员。所以,您只需要一个 RecyclerView
,它会非常有效。
您应该从线性布局中删除第二个 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>
这是代码:
<?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,但没有任何效果。可以告诉我吗
将 RecyclerView
或 ListView
放在 ScrollView
中是不明智的。 Android 不知道如何处理用户事件。此外,在您的情况下,根 ScrollView
中有两个 RecyclerView
...对于 Android UI 框架和用户来说都是疯狂的。
一种解决方案可能是只使用一个 RecyclerView
来处理滚动用户操作,以及一个 Adapter
知道如何呈现您使用的所有内容:成就徽章、名人堂标签、和球员。所以,您只需要一个 RecyclerView
,它会非常有效。
您应该从线性布局中删除第二个 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>