RecyclerView 挤压子项宽度
Posted
技术标签:
【中文标题】RecyclerView 挤压子项宽度【英文标题】:RecyclerView Squeezes Child items width 【发布时间】:2021-04-24 11:33:22 【问题描述】:我将 RecyclerView 与 Horizontal LinearLayoutManager 一起使用。 RecyclerView 的 child 是 CardView,虽然 child 的宽度参数仍然设置,但 recycler view 将其膨胀为挤压宽度
这是我的 RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_popular_courses"
android:layout_
android:layout_
tools:listitem="@layout/card_popular_quizzes" />
这里是 card_popular_quizzes.xml
<androidx.cardview.widget.CardView
android:layout_
android:layout_
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:minHeight="150dp"
app:cardElevation="@dimen/card_itemcourse_elevation"
app:cardBackgroundColor="#309C98"
app:cardCornerRadius="16dp"
>
<!-- app:cardElevation="10dp"-->
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_gravity="center">
<ImageView
android:id="@+id/quiz_thumbnail_imgvw"
android:layout_
android:layout_
android:layout_gravity="center"
android:adjustViewBounds="true"
android:cropToPadding="true"
android:maxWidth="100dp"
android:src="@drawable/android_developer" />
<TextView
android:id="@+id/quiz_textvw"
android:layout_
android:layout_
android:layout_gravity="center"
android:text="Hall of Fame"
android:textColor="@color/whiteTextColor"
android:textSize="16sp"
android:textStyle="bold"
android:layout_marginBottom="10dp"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
另外,recyclerview 在片段内,这是我添加 LinearLayoutManager 的代码
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
//removed some view initialisations
RecyclerView rvPopularCourses=view.findViewById(R.id.rv_popular_courses);
rvPopularCourses.setLayoutManager(
new LinearLayoutManager(view.getContext(),LinearLayoutManager.HORIZONTAL,false));
rvPopularCourses.setAdapter(quizAdapter);
这是一个视觉截图供参考
【问题讨论】:
这能回答你的问题吗? match_parent width does not work in RecyclerView @ADM 它不起作用 查看您的适配器会有所帮助 【参考方案1】:LinearLayout 宽度是导致此问题的 wrap_content。
您必须在 card_popular_quizzes.xml 中将您的 LinearLayout layout_width
设置为 match_parent
【讨论】:
以上是关于RecyclerView 挤压子项宽度的主要内容,如果未能解决你的问题,请参考以下文章
Jetpack compose 中的 [NestedScrollView + RecyclerView] 或 [Nested RecyclerView (Recycler inside another
Android RecyclerView 绘制流程及Recycler缓存
Android RecyclerView 绘制流程及Recycler缓存
在水平和垂直的recyclerview中膨胀布局,具有recycler视图的FlexboxLayout添加视图水平自动垂直
Dpad 导航无法在 Appbarlayout 下方的 recyclerview 的电视上工作(recycler view 无法通过 dpad 获得焦点)