0

我正在尝试在我的 flexboxlayout 中创建一个新行。重要的是我可以指定确切的项目,之后应该有一个新行。recyclerview 项目是cardviews。我知道我应该将属性 isWrapBefore 更改为 true,但我不知道该怎么做。我已经阅读了 Flexbox 文档。

我试图复制这个解决方案,但它似乎不起作用:以 编程方式设置 FlexboxLayout 的属性 layout_wrapbefore

这是我在主要片段 onCreate() 中尝试过的:

 val layoutManager = FlexboxLayoutManager(context)
 recyclerView.layoutManager = layoutManager


val letterCardView = (recyclerView.layoutManager as FlexboxLayoutManager).findViewByPosition(2) //get the view of item 2
        val lp = letterCardView?.layoutParams as? FlexboxLayout.LayoutParams 
        lp?.isWrapBefore=true 
        letterCardView?.layoutParams=lp

上面的代码似乎没有做任何事情。

我的 letterCardView xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/letter_card_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <com.google.android.material.card.MaterialCardView
        android:id="@+id/letter_card_view"
        android:layout_width="28dp"
        android:layout_height="40dp"
        app:cardBackgroundColor="@color/pink_light"
        app:cardCornerRadius="3dp"
        app:cardElevation="2dp"
        app:cardUseCompatPadding="true"
        app:strokeColor="@color/pink_dark"
        app:strokeWidth="2dp"
        tools:ignore="MissingConstraints">

        <TextView
            android:id="@+id/letter_textView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:text=""
            android:textAlignment="center"
            tools:ignore="RtlCompat" />
    </com.google.android.material.card.MaterialCardView>
</FrameLayout>

主片段 xml 中的 Recyclerview

<androidx.recyclerview.widget.RecyclerView
                android:id="@+id/letter_card_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:layout_marginBottom="16dp"
                android:orientation="horizontal"
                app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/category"
                tools:itemCount="11"
                tools:listitem="@layout/item_view" />

如何在特定项目上将 isWrapBefore 设置为 true 并以编程方式在 recyclerview 中强制换行?

一种解决方法是插入隐藏的卡片视图来填写第一行,但我真的不想诉诸于此。

很感谢任何形式的帮助。

4

0 回答 0