Горизонтальный RecylerView не отображается в нескольких строках должным образом - PullRequest
0 голосов
/ 16 января 2020

Я использую Horizontal RecyclerView , который содержит элементы в несколько строк. Я использовал FlexboxLayoutManager , чтобы разбить все элементы на несколько строк, но представление создается не так, как я хочу. Это автоматически сокращает количество символов TextView

Я хочу, чтобы мой вид был похож на изображение ниже

enter image description here

Мой код для этого:

XML:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dp4"
android:layout_marginBottom="@dimen/dp4">


<TextView
    android:id="@+id/btnProduct"
    android:layout_width="wrap_content"
    android:layout_height="@dimen/dp30"
    android:layout_gravity="center"
    android:background="@drawable/bg_white_box"
    android:gravity="center"
    android:maxLines="1"
    android:padding="@dimen/dp5"
    android:singleLine="true"
    android:text="Denim Jeans Outfit goes"
    android:textAlignment="center"
    android:textAllCaps="false" />

Код:

    RecommendProductAdapter recommendProductAdapter = new RecommendProductAdapter(getActivity(), recommendedProductList, SearchProductFragment.this);
                                FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(getActivity());
                                layoutManager.setFlexDirection(FlexDirection.ROW);
                                layoutManager.setJustifyContent(JustifyContent.FLEX_START);
                                listRecommend.setLayoutManager(layoutManager);
                                listRecommend.setAdapter(recommendProductAdapter);

Я не указал 4 столбца, но получаю 4 столбцы каждый раз.

Ниже изображения, если я сделаю TextView's width в "wrap_content". Я не указал длину символа также, но он обрезает мой текст до .... Я хочу полный текст.

enter image description here

И если я укажу TextView's width в "176dp", то ниже вывод

enter image description here

Пожалуйста, помогите, что можно сделать.

Ответы [ 2 ]

1 голос
/ 16 января 2020

Вы должны установить flex-wrap на wrap

Этот атрибут определяет, является ли гибкий контейнер однострочным или многострочным, а также направление поперечной оси. Возможные значения:

  • nowrap (по умолчанию)
  • wrap
  • wrap_reverse
0 голосов
/ 16 января 2020

recycler_item. xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
    android:background="#F6F6F6"
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="10dp"
    android:padding="10dp" /></LinearLayout>

java

 recyclerview = findViewById(R.id.recyclerview);
    FlexboxLayoutManager flexboxLayoutManager = new FlexboxLayoutManager(getApplicationContext());
    flexboxLayoutManager.setFlexDirection(FlexDirection.ROW);
    flexboxLayoutManager.setJustifyContent(JustifyContent.FLEX_START);
    recyclerview.setLayoutManager(flexboxLayoutManager);

    recyclerview.setAdapter(myAdapter);

выход: enter image description here

...