【问题标题】:Horizontal RecylerView is not displayed in multiple rows properly水平 RecyclerView 未正确显示在多行中
【发布时间】:2020-05-03 03:31:14
【问题描述】:

我正在使用 Horizo​​ntal RecyclerView,其中包含 n 多行的项目。我使用 FlexboxLayoutManager 将所有项目拆分为多行,但视图没有按我的意愿创建。它会自动减少 TextView

的字符数

我想要如下图所示的视图

我的代码:

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 的 宽度设置为“wrap_content”,则下图。我还没有指定字符长度,但它会将我的文本剪切为 ... 。我要全文。

如果我将 TextView 的 宽度指定为“176dp”,那么下面是输出

请帮忙看看有什么办法。

【问题讨论】:

标签: android android-layout android-fragments android-recyclerview horizontal-scrolling


【解决方案1】:

您必须将flex-wrap 设置为wrap

该属性控制flex容器是单行还是多行,以及横轴的方向。可能的值是:

  • nowrap(默认)
  • 换行
  • wrap_reverse

【讨论】:

  • 但我没有在任何地方使用过 flex-wrap
  • 你应该使用它。
  • 不适合我。完整的文本不可见,列仍然是 4 没有增加或减少
【解决方案2】:

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);

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    相关资源
    最近更新 更多