【问题标题】:Android dark theme doesn't set windowBackgroundAndroid深色主题不设置windowBackground
【发布时间】:2018-02-14 01:12:09
【问题描述】:

我有一个可以工作但拒绝设置 android:windowBackgorund 和 android:colorBackground 的主题。 其余代码正常工作,如果我切换默认主题中的项目,它工作正常。

styles.xml:

    <!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:navigationBarColor">@color/colorPrimary</item>
    <item name="android:radioButtonStyle">@style/radioLight</item>
</style>

<style name="Dark" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:navigationBarColor">@color/colorPrimary</item>
    <item name="android:windowBackground">@color/grey</item>
    <item name="android:colorBackground">@color/grey</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textColorHint">@color/soft_grey</item>
    <item name="android:radioButtonStyle">@style/radioDark</item>
</style>

主要:

setTheme(R.style.Dark);

不知道有没有用 activity_main xml:

    <android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/appbar_padding_top"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:scrollbars="none"
        app:popupTheme="@style/AppTheme.PopupOverlay">

    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="35dp" />

</android.support.design.widget.AppBarLayout>

我犯了什么可耻的错误?

【问题讨论】:

    标签: java android xml android-layout


    【解决方案1】:

    android:windowBackground 只接受可绘制对象。尝试将其更改为类似

    <item name="android:windowBackground">@drawable/abc</item>
    

    并创建一个文件abc.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
        <solid android:color="@color/grey"/>
    </shape>
    

    只是检查一下,在调用 super.onCreate() 之前你是否调用了 setTheme?

    【讨论】:

    • 问题是我在 super.onCreate() 函数和 @drawable 之前调用了 set 主题。非常感谢你!
    • 这个答案不正确。 windowBackground 也接受颜色。
    【解决方案2】:
    1. 添加 2 个新资源文件: 对于浅色主题 splash_background.xml
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:drawable="@color/white" />
        <item>
            <bitmap android:gravity="center"
                android:src="@drawable/logo"/>
        </item>
    </layer-list>
    

    对于深色主题 splash_background.xml 将其放在 drawable-night 文件夹中(如果没有则创建):

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:drawable="@color/grey" />
        <item>
            <bitmap android:gravity="center"
                android:src="@drawable/logo"/>
        </item>
    </layer-list>
    
    1. 终于在你的themes.xml中:
        <style name="Theme.AppName.SplashTheme" parent="Theme.AppName">
            <item name="android:windowBackground">@drawable/splash_background</item>
        </style>
    

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 2021-03-14
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多