gpt4 book ai didi

android:windowBackground 不适用于 RecyclerView

转载 作者:行者123 更新时间:2023-11-30 05:00:15 26 4
gpt4 key购买 nike

我的布局看起来像

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

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

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" />
</com.google.android.material.appbar.AppBarLayout>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</LinearLayout>

我想从我的 fragment 中动态应用主题requireContext().setTheme(R.style.MyTheme)

不幸的是,android:windowBackground 没有在 RecyclerView 上设置背景。

    <style name="MyTheme" parent="@style/ThemeOverlay.AppCompat.Dark">
<item name="android:windowBackground">@drawable/gradient_background</item>
</style>

此外,android:background 无法正常工作。它在每个单元格上设置渐变背景,而不是在整个屏幕上。

<style name="MyTheme" parent="@style/ThemeOverlay.AppCompat.Dark">
<item name="android:background">@drawable/gradient_background</item>
</style>

RecyclerView 上设置 android:background 有效

    <androidx.recyclerview.widget.RecyclerView
android:background="@drawable/gradient_background"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />

但我想通过单一主题来实现。可能吗?

最佳答案

根据您使用的内容,您可以在样式中创建自定义属性,例如:

<style name="MyTheme" parent="@style/ThemeOverlay.AppCompat.Dark">
<item name="recyclerViewBackground">@drawable/paywall_background</item>
</style>

<style name="MyTheme2" parent="@style/ThemeOverlay.AppCompat.Dark">
<item name="recyclerViewBackground">@drawable/another_background</item>
</style>

将此添加到 values 文件夹下的 attrs.xml 文件(如果没有,请创建它):

<attr name="recyclerViewBackground" format="reference" />

然后使用这个设置背景:

<com.airbnb.epoxy.EpoxyRecyclerView
style="?theme"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?recyclerViewBackground"/>

更改主题并重新创建 fragment 应该现在更改RecyclerView 的背景。还要确保您将与此 View 一起使用的每个主题都包含属性 recyclerViewBackground 否则您将遇到异常。

关于android:windowBackground 不适用于 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58375943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com