RecyclerView 包装它的内容
RecyclerView wraps its conent
我正在使用 RecyclerView 来膨胀线性垂直 listView,但是,尽管子项的宽度设置为 match_parent,但 RecyclerView 在运行时将其包装。
问题截图如下:
item_recyclerView
<?xml version="1.0" encoding="utf-8"?>
<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="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tag_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:maxLines="2"/>
<TextView
android:id="@+id/tag_role"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/user_pic"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_weight="0"
android:rotation="-45"
android:scaleType="centerCrop"
android:src="@drawable/ic_user"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.circleImageView" />
</LinearLayout>
扩充布局文件时,根视图上的 layout_
属性将被忽略,除非您在 inflate()
调用中指定父级 ViewGroup
。您目前没有这样做。
在您的 onCreateViewHolder()
方法中,替换为:
ItemQuestionPostBinding binding = ItemQuestionPostBinding.inflate(inflater);
有了这个:
ItemQuestionPostBinding binding = ItemQuestionPostBinding.inflate(inflater, parent, false);
另请注意,您可能不希望将 match_parent
用于 RecyclerView 项目的 高度 :
android:layout_width="match_parent"
android:layout_height="match_parent"
这将使您的 RecyclerView 中看起来只有一个项目可见,因为每个项目都是屏幕的整个高度。这目前不是问题,原因与 match_parent
宽度被忽略的原因完全相同。
给你的父线性布局 weightSum 5
给 imageView 权重 1 并做他的宽度 0
对于子线性布局权重 4
enter code here
我正在使用 RecyclerView 来膨胀线性垂直 listView,但是,尽管子项的宽度设置为 match_parent,但 RecyclerView 在运行时将其包装。
问题截图如下:
item_recyclerView
<?xml version="1.0" encoding="utf-8"?>
<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="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tag_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:maxLines="2"/>
<TextView
android:id="@+id/tag_role"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/user_pic"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_weight="0"
android:rotation="-45"
android:scaleType="centerCrop"
android:src="@drawable/ic_user"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.circleImageView" />
</LinearLayout>
扩充布局文件时,根视图上的 layout_
属性将被忽略,除非您在 inflate()
调用中指定父级 ViewGroup
。您目前没有这样做。
在您的 onCreateViewHolder()
方法中,替换为:
ItemQuestionPostBinding binding = ItemQuestionPostBinding.inflate(inflater);
有了这个:
ItemQuestionPostBinding binding = ItemQuestionPostBinding.inflate(inflater, parent, false);
另请注意,您可能不希望将 match_parent
用于 RecyclerView 项目的 高度 :
android:layout_width="match_parent" android:layout_height="match_parent"
这将使您的 RecyclerView 中看起来只有一个项目可见,因为每个项目都是屏幕的整个高度。这目前不是问题,原因与 match_parent
宽度被忽略的原因完全相同。
给你的父线性布局 weightSum 5 给 imageView 权重 1 并做他的宽度 0 对于子线性布局权重 4
enter code here