从样式设置android:windowBackground混淆应用程序

时间:2017-11-05 14:01:38

标签: android android-layout android-studio android-fragments

我的申请有问题。我正在尝试对其进行更新,以便用户可以为应用程序选择自己的主题。但是,这意味着我必须将背景图像的设置从.xml文件移动到我的主题样式中的styles.xml。我通过从我的xmls中删除android:background="@drawable/bg"并将<item name="android:windowBackground">@drawable/bg</item>添加到我的样式中来完成此操作。这在预览中看起来没问题但是一旦我在模拟器中运行它,每当我切换片段时,主片段的所有内容(在启动时加载)始终保持在后台... The we, they, the zeros and all the buttons are from the first fragment but are still visible in this one for some reason...

我们,它们,零和所有按钮来自第一个片段,但由于某种原因仍然可以在这个片段中看到...

2 个答案:

答案 0 :(得分:0)

这是因为你的片段都没有任何背景。因此,当您添加片段时,内容将彼此重叠。尝试设置片段的背景或者您可以使用替换而不是添加片段。

答案 1 :(得分:0)

像下面一样在style.xml中创建一个新主题

<style name="AppTheme.Fragment" parent="Theme.MaterialComponents.Light">
    <item name="android:background">@drawable/bg_fragment</item>
</style>

然后在每个片段上应用如下主题

<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
    style="@style/AppTheme.Fragment">

    <!-- your code here -->

</androidx.coordinatorlayout.widget.CoordinatorLayout>

现在,每当需要将片段背景更改为其他背景时,请修改android:background主题中的style.xml选项


@drawable/bg_fragment如下

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@android:color/white" />
</shape>