如何使用recyclerview中的内部文本长度更改列宽

时间:2017-11-29 12:46:36

标签: android gridview layout android-recyclerview recycler-adapter

我必须代表TextViews中的一些短句。我使用带有recyclerView的{​​{1}}并在网格的每个单元格上设置GridLayoutManager上的每个句子。问题是,我希望网格的每个单元格根据TextView中的文本更改其宽度。我的意思是,一个长句可以占据屏幕的全宽,或者如果句子非常短,它们必须在同一行。

我也尝试使用TextView,但我也无法获得所需的结果。

有关如何获得这个的想法吗?

修改

item.xml

GridView

编辑2

Desired layout

这是布局应如何显示的示例。每个元素的长度不会总是相同。所以我需要一种布局,让较大的元素具有更短的宽度。

3 个答案:

答案 0 :(得分:2)

使用此gradle

implementation 'com.google.android:flexbox:1.0.0'

尝试在您的回收站视图中使用此布局

FlexboxLayoutManager flexLayout = new FlexboxLayoutManager( MainActivity.this );
recyclerView.setLayoutManager( flexLayout );

答案 1 :(得分:1)

您需要为StaggeredGridLayoutManager使用RecycelrViewStaggeredGridLayoutManager关于这一点并使用。

答案 2 :(得分:1)

使用以下布局将根据您的文字更改您的行项目大小。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimaryLight"
    android:padding="10dp">

    <TextView
        android:id="@+id/item_text"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:minWidth="100dp"
        android:textColor="@color/primary_text"
        android:gravity="center"
        android:textSize="18sp"/>

   </LinearLayout>
</LinearLayout>