Высота строки AndroidX RecyclerView не переносится

Я использую новые библиотеки Androidx и столкнулся с проблемой, которую не могу исправить. Я использую RecyclerView и просто не могу перенести строку. Он должен это делать, и все, что я читаю, кажется, что оно просто работает, если я не могу понять это правильно. Я использовал это ранее, и у меня не было этой проблемы. Я пробовал отрегулировать все настройки как в основном макете, так и в макете элементов, но, похоже, на это ничего не влияет. Любая помощь будет оценена по достоинству.

main_activity.xml

<?xml version = "1.0" encoding = "utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    xmlns:tools = "http://schemas.android.com/tools">

    <androidx.core.widget.NestedScrollView
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        app:layout_behavior = "@string/appbar_scrolling_view_behavior">

        <androidx.recyclerview.widget.RecyclerView
            android:id = "@+id/cardRecycler"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            app:layoutManager = "androidx.recyclerview.widget.GridLayoutManager"
            android:clipToPadding = "false"
            app:spanCount = "4"

            android:orientation = "vertical"
            tools:listitem = "@layout/item_card_preview"/>

    </androidx.core.widget.NestedScrollView>

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        app:liftOnScroll = "true">

        <androidx.appcompat.widget.Toolbar
            android:id = "@+id/toolbar"
            android:layout_width = "match_parent"
            android:layout_height = "?attr/actionBarSize"
            android:background = "@android:color/white"
            app:titleTextColor = "@color/colorSecondary" />

    </com.google.android.material.appbar.AppBarLayout>


</androidx.coordinatorlayout.widget.CoordinatorLayout>

item.xml

 <?xml version = "1.0" encoding = "utf-8"?>
    <layout 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">

        <data>
            <variable
                name = "card"
                type = "com.jibmobile.clashroyaltoolkit.vo.CardPreview"/>


        </data>

        <ImageView
            android:id = "@+id/imageView"
            image = "@{card.name}"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:layout_marginTop = "0dp"
            android:paddingTop = "0dp"
            android:contentDescription = "@{card.displayName}"
            tools:src = "@drawable/archers" />
3
0
287
1

Ответы 1

Хорошо, в моем случае, в item.xml, высота была задана match_parent. После того, как я преобразовал его в "wrap_content", высота представления корзины была увеличена в соответствии с количеством элементов. Обратите внимание, что я также использую библиотеку androidx.

Код item.xml был таким

<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    android:orientation = "horizontal"
    android:padding = "@dimen/small_padding">

    <ImageView
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:background = "@drawable/tickred"
        android:layout_marginStart = "0dp"
        android:layout_marginTop = "1dp"
        android:layout_gravity = "top"
        android:layout_marginEnd = "@dimen/dimen_margin_between_text"/>

    <androidx.appcompat.widget.AppCompatTextView
        android:layout_width = "0dp"
        android:layout_weight = "1"
        android:layout_height = "wrap_content"
        android:id = "@+id/serviceTv"
        android:layout_gravity = "top"
        android:gravity = "top"
        app:fontFamily = "@font/lato_regular"
        android:textColor = "@color/black"
        android:textSize = "@dimen/dimen_text_smallx"/>

</LinearLayout>

Я изменил высоту контейнера на wrap_content, и recycleview соответственно принимает свою высоту.

<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    android:orientation = "horizontal"
    android:padding = "@dimen/small_padding">

    <ImageView
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:background = "@drawable/tickred"
        android:layout_marginStart = "0dp"
        android:layout_marginTop = "1dp"
        android:layout_gravity = "top"
        android:layout_marginEnd = "@dimen/dimen_margin_between_text"/>

    <androidx.appcompat.widget.AppCompatTextView
        android:layout_width = "0dp"
        android:layout_weight = "1"
        android:layout_height = "wrap_content"
        android:id = "@+id/serviceTv"
        android:layout_gravity = "top"
        android:gravity = "top"
        app:fontFamily = "@font/lato_regular"
        android:textColor = "@color/black"
        android:textSize = "@dimen/dimen_text_smallx"/>

</LinearLayout>

Другие вопросы по теме