This is my app where is the problem exists
I want my items to fit like this app
我正在将RecyclerView
与GridLayoutManager
一起使用。您在图像中看到的我的问题是,其中一项具有较长的文本时,网格项的高度不同。我正在从firebase加载数据,并且列表中有数据时通知Adapter
。我尝试了所有方法,但找不到能自动适应项目的解决方案,如所附的第二张图片。有什么帮助吗?
这是我的recyclerview项目布局
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
>
<android.support.v7.widget.CardView
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:cardCornerRadius="10dp"
android:layout_margin="5dp"
app:cardBackgroundColor="#fff"
app:cardElevation="5dp"
>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/cartoonImg"
android:layout_width="match_parent"
android:layout_height="120dp"
android:scaleType="fitXY"
app:imgUrl="@{cartoon.thumb}"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
tool:text="Cartoon Name"
android:gravity="center"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginRight="2dp"
android:layout_marginLeft="2dp"
android:textColor="@color/colorPrimary"
android:text="@{cartoon.title}" />
</LinearLayout>
</android.support.v7.widget.CardView>
</FrameLayout>
答案 0 :(得分:1)
这将完全满足您的需求
尝试以此替换您的
TextView
:
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
tool:text="Cartoon Name"
android:gravity="center"
android:minLines="2"
android:maxLines="2"
android:ellipsize="end"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginRight="2dp"
android:layout_marginLeft="2dp"
android:textColor="@color/colorPrimary"
android:text="@{cartoon.title}" />
答案 1 :(得分:0)
您可以为textview赋予一个静态高度,这样对所有人来说都是一样的。但是您可能会因此丢失文本。
答案 2 :(得分:0)
您可以添加到TextView:
android:ellipsize="start"
android:maxLines="1
从API 26开始,您可以使用Autosizing TextView-在此处查看文档:{{3}}
答案 3 :(得分:0)
您正在使用线路
android:layout_height="wrap_content"
在您的CardView
上,并且由于后代拥有match_parent
,因此您的TextView
的大小会更改。
要解决此问题,可以在android:maxLines="1"
中使用以下属性TextView
。这将阻止TextView跳至下一行,但会裁剪文本。
或者,您可以使用静态高度而不是match_parent
或wrap_content
,即使用一个值。我强烈建议使用48dp
,因为这是Material Design Guidelines的建议。
来源: