XML 中为 RecyclerView 设置的背景图片未显示在 Android 中

Background image set for RecyclerView in XML doesn't show in Android

我正在使用 RecyclerView 并尝试使用 android:background="@drawable/soccer_field" 为 XML 中的 RecyclerView 设置背景图片 但由于某种原因,它没有显示。

我尝试为(所有屏幕的)整个布局设置背景图片,我发现 RecyclerView "hides" 背景图片,所以只有在 RecyclerView 上你才能看到它。 如果我删除 RecyclerView 你可以看到

activity的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".Activities.GroupStandingsActivity">

    <RelativeLayout
        android:id="@+id/standings_columns_relative_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingVertical="2dp">

        <TextView
            android:id="@+id/player_name_column"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_marginEnd="2dp"
            android:layout_marginRight="2dp"
            android:layout_toStartOf="@+id/rating_number_column"
            android:layout_toLeftOf="@+id/rating_number_column"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingStart="60dp"
            android:paddingLeft="60dp"
            android:text="@string/player_name_column"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
            android:textColor="#000000"
            android:textSize="22sp" />

        <TextView
            android:id="@+id/rating_number_column"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toStartOf="@id/games_number_column"
            android:layout_toLeftOf="@id/games_number_column"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingHorizontal="10dp"
            android:text="@string/rating_column"
            android:textColor="#000000"
            android:textSize="22sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/games_number_column"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toStartOf="@id/wins_number_column"
            android:layout_toLeftOf="@id/wins_number_column"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingHorizontal="21dp"
            android:text="@string/games_column"
            android:textColor="#000000"
            android:textSize="22sp" />

        <TextView
            android:id="@+id/wins_number_column"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toStartOf="@id/losses_number_column"
            android:layout_toLeftOf="@id/losses_number_column"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingHorizontal="15dp"
            android:text="@string/wins_column"
            android:textColor="#000000"
            android:textSize="22sp" />

        <TextView
            android:id="@+id/losses_number_column"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toStartOf="@id/goals_number_column"
            android:layout_toLeftOf="@id/goals_number_column"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingHorizontal="20dp"
            android:text="@string/losses_column"
            android:textColor="#000000"
            android:textSize="22sp" />

        <TextView
            android:id="@+id/goals_number_column"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toStartOf="@id/assists_number_column"
            android:layout_toLeftOf="@id/assists_number_column"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingHorizontal="11dp"
            android:text="@string/goals_column"
            android:textColor="#000000"
            android:textSize="22sp" />

        <TextView
            android:id="@+id/assists_number_column"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingLeft="20dp"
            android:paddingRight="50dp"
            android:text="@string/assists_column"
            android:textColor="#000000"
            android:textSize="22sp" />
    </RelativeLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/standings_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/soccer_field"
        android:layout_below="@+id/standings_columns_relative_layout"
        tools:listitem="@layout/standings_item" />
    <!-- remember Image by <a href="https://pixabay.com/users/OpenClipart-Vectors-30363/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=145794">OpenClipart-Vectors</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=145794">Pixabay</a> -->

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/play_game_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_gravity="bottom|end"
        android:layout_margin="50dp"
        android:src="@drawable/ic_football" />
    <!-- remember credit https://www.flaticon.com/free-icon/football_1165187 -->

</RelativeLayout>

实际效果(背景图全屏时):

当预期它也会在 RecyclerView 后面时。

将在 RecycleView 中膨胀的 ViewItem 的背景颜色设置为透明。

显然这个白色背景来自 RecyclerView 的膨胀项目

[player name 0 0 0 0 0 0]

在你的情况下称为 standings_item

因此,要显示 RecyclerView 背景,您必须从单人游戏视图中移除白色背景 (standings_item),这里最好的选择不是完全移除白色背景,而是给它一个半透明背景- 透明背景颜色以保持视图的可见性,一些颜色示例为:

<color name="dark_overlay">#0D29303F</color>
<color name="very_dark_overlay">#9929303F</color>