Как я могу уменьшить пространство между отдельными CardViews в RecyclerView? - PullRequest
0 голосов
/ 26 апреля 2020

Итак, я учился внедрять RecyclerViews вместе с CardViews. Я обнаружил, что эти отдельные CardViews имеют много места между ними. Вот код XML для RecyclerView, а также CardView.

activity_main. xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="@android:color/transparent">

    <TextView
        android:id="@+id/bannerId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginTop="10dp"
        android:text="@string/favorite_artists_text"
        android:textSize="27sp"
        android:textAlignment="center"
        android:fontFamily="@font/montserrat_alternates_bold"/>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/RecyclerView"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        app:layout_constraintTop_toBottomOf="@id/bannerId"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:background="@android:color/transparent"
        android:layout_marginTop="65dp"/>

</androidx.constraintlayout.widget.ConstraintLayout>

layout_listitems. xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/primaryCardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    app:cardMaxElevation="1dp"
    app:cardElevation="1dp">

    <RelativeLayout
        android:id="@+id/housingRelativeLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="3dp">

        <TextView
            android:id="@+id/rank"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fontFamily="@font/old_standard_tt_bold"
            android:text="@string/sample_rank"
            android:textAlignment="center"
            android:textSize="27sp" />

        <View
            android:id="@+id/separator_line"
            style="@style/separator_line"
            android:layout_below="@id/rank"/>

        <TextView
            android:id="@+id/songName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/separator_line"
            android:layout_marginTop="15dp"
            android:text="@string/sample_song_name"
            android:textSize="17sp"
            android:fontFamily="@font/varela_round"/>

        <TextView
            android:id="@+id/artistName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/songName"
            android:text="@string/sample_artist_name"
            android:textSize="17sp"
            android:fontFamily="@font/varela_round"/>

    </RelativeLayout>

</androidx.cardview.widget.CardView>

Я проверил несколько других ответов здесь, в переполнении стека, и один из них сказал, что добавление этих строк:

app:cardMaxElevation="1dp"
app:cardElevation="1dp"

решит проблему. Но это ничего не сделало.

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

потому что вы используете android:layout_margin="10dp" для cardView, что означает, что вы добавите 10dp пробел со всех сторон, первый элемент теперь имеет 10dp top & bottom, при добавлении второго элемента для recyclerView добавится еще один 10dp сверху, так что теперь у второго элемента есть 20dp пространство для полей.

Как исправить?

вы можете устанавливать поля, используя только top, start и end.

1 голос
/ 26 апреля 2020

Точно так же, как решение Moustafa EL-Saghier, вставив эту строку кода в XML

android:layout_margin="10dp"

Вы в основном говорите программе, что между всеми вашими картами должно быть пространство на 10 дп. RecyclerView, включая боковые стороны.

Для горизонтального RecyclerView вы хотели бы поставить:

android:layout_marginStart ="10dp"
android:layout_marginEnd = "10dp"

Это позволит разместить пространство между карточками с левой и правой стороны.

Для вертикального Recyclerview вы хотели бы поставить:

android:layout_marginTop ="10dp"
android:layout_marginBottom = "10dp"

Это позволит поместить пространство между карточками на верхней и нижней сторонах.

Опять же, это точно так же, как ответ Мустафы EL-Saghier, таким образом, чтобы удовлетворить ваши потребности Cardview в простых битах кода. Надеюсь, это поможет!

...