如何更改android app的颜色主题?

时间:2021-01-04 23:00:28

I’ve been following instructions on how to change the color, but the program produces this error:

我一直在按照如何更改颜色的说明,但程序产生此错误:

06-29 19:20:39.416 7041-7041/com.example.lucerne.adapter_example_2 E/AndroidRuntime: FATAL EXCEPTION: main

06-29 19:20:39.416 7041-7041 / com.example.lucerne.adapter_example_2 E / AndroidRuntime:FATAL EXCEPTION:main

    Process: com.example.lucerne.adapter_example_2, PID: 7041
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lucerne.adapter_example_2/com.example.lucerne.adapter_example_2.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

Currently, style.xml looks like below:

目前,style.xml如下所示:

<!--<color name="white_opaque">#FFFFFFFF</color>-->
<!--<color name="pitch_black">#FF000000</color>-->

<!--<style name="AppTheme" parent="android:Theme.Light">-->
    <!--<item name="android:background">@color/white_opaque</item>-->
    <!--<item name="android:windowBackground">@color/white_opaque</item>-->
    <!--<item name="android:colorBackground">@color/white_opaque</item>-->

<!--</style>-->

 <!--Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<!--<style name="AppTheme" parent="@android:style/Theme.Holo.Light">-->
    <!--<item name="android:actionBarStyle">@style/MyActionBarTheme</item>-->
<!--</style>-->
<!--<style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">-->
    <!--<item name="android:background">#FF0000</item>-->
<!--</style>-->

What is causing the error, and how I can change the colors to something else?

导致错误的原因是什么,以及如何将颜色更改为其他内容?

如何更改android app的颜色主题?

1 个解决方案

#1


4  

As the error says, you must extend Theme.AppCompat in your style.

如错误所示,您必须在您的样式中扩展Theme.AppCompat。

Simple example like this:

像这样的简单示例:

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
  </style>

 <style name="Theme.SemiTransparent" parent="AppTheme.NoActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@color/colorSemiTransparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:backgroundDimEnabled">false</item>
  </style>

look at the style name at the first style, AppTheme.NoActionBar, it's using AppTheme as its base. Then in the second style, AppTheme.NoActionBar, it's using AppTheme with NoActionBar as its parent.

看看第一个风格的风格名称,AppTheme.NoActionBar,它使用AppTheme作为基础。然后在第二种风格AppTheme.NoActionBar中,它使用AppTheme和NoActionBar作为其父级。

After you have using AppTheme as the base, you can change the color of your view with your custom style.

使用AppTheme作为基础后,可以使用自定义样式更改视图的颜色。

#1


4  

As the error says, you must extend Theme.AppCompat in your style.

如错误所示,您必须在您的样式中扩展Theme.AppCompat。

Simple example like this:

像这样的简单示例:

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
  </style>

 <style name="Theme.SemiTransparent" parent="AppTheme.NoActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@color/colorSemiTransparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:backgroundDimEnabled">false</item>
  </style>

look at the style name at the first style, AppTheme.NoActionBar, it's using AppTheme as its base. Then in the second style, AppTheme.NoActionBar, it's using AppTheme with NoActionBar as its parent.

看看第一个风格的风格名称,AppTheme.NoActionBar,它使用AppTheme作为基础。然后在第二种风格AppTheme.NoActionBar中,它使用AppTheme和NoActionBar作为其父级。

After you have using AppTheme as the base, you can change the color of your view with your custom style.

使用AppTheme作为基础后,可以使用自定义样式更改视图的颜色。