当前位置: 首页 > 知识库问答 >
问题:

Android主题属性在浅色和深色之间部分切换

海叶秋
2023-03-14

我正在为我的应用程序构建一个明暗主题。我想为应用程序中的所有按钮使用自定义形状。但是,在主题之间切换时,不会将“colorAccent”属性替换为按钮背景色。

在灯光模式下,colyAccent是Orange,它显示橙色。

但是在黑暗模式下,colyAccent是紫色的,但它仍然显示橙色

我知道交换正在起作用,因为我可以改变其他颜色,然后它们就会被采用。这只是按钮的形状。

我肯定和有关

谁能看出我做错了什么?

灯光主题

<resources>
   <!--Top level DayNight theme to be used in AndroidManifest.xml-->
    <style name="MyCustomTheme" parent="Base.MyCustomTheme"/>

    <style name="MyCustomTheme.System.Defaults" parent="Theme.AppCompat.DayNight.DarkActionBar">
        <item name="android:fontFamily">@font/driver_font_family</item>
    </style>


    <style name="Base.MyCustomTheme" parent="MyCustomTheme.System.Defaults">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@color/OffWhite</item>

        <!--Component styles-->
        <item name="buttonStyle">@style/MyCustomTheme.Button</item>
    </style>

</resources>

夜间主题

<resources>
    <style name="MyCustomTheme" parent="Base.MyCustomTheme">
        <item name="colorPrimary">@color/Green</item>
        <item name="colorPrimaryDark">@color/Red</item>
        <item name="colorAccent">@color/Purple</item>
        <item name="android:windowBackground">@color/BlackDark</item>
    </style>
</resources>

rounded_corners.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners  android:radius="10dp" />
    <padding  android:padding="0dp"/>
    <solid android:color="@color/colorAccent" />
</shape>

颜色。xml

<resources>
    <!--Leaving these here since they are refrenced by the system and other components-->
    <color name="colorPrimary">@color/NavyBlue</color>
    <color name="colorPrimaryDark">@color/NavyBlueDark</color>
    <color name="colorAccent">@color/Orange</color>

    <color name="Red">#E84E3C</color>
    <color name="Purple">#745EC4</color>
    <color name="Green">#2FCC70</color>
    <color name="NavyBlue">#34495E</color>
    <color name="NavyBlueDark">#2B3D4F</color>
    <color name="BlueDark">#394D82</color>    
    <color name="OffWhite">#EDF1F2</color>
    <color name="BlackDark">#262626</color>
</resources>

共有1个答案

督宏旷
2023-03-14

问题在于:

<solid android:color="@color/colorAccent" />

通过这种方式,您可以链接在“颜色”中定义的颜色。xml(即颜色/橙色)。相反,您应该链接应用程序主题中定义的属性:

更改为:

<solid android:color="?attr/colorAccent" />
 类似资料:
  • 实现App外观主题切换功能,可以切换导航条、TabBar和字体的颜色,以及TabBar的按钮图片。 [Code4App.com]

  • 我在Bootstrap 4上,有一个浅色。PNG图像作为navbar和主体的背景,而页脚区域是在黑色与灰白色文本颜色。默认的文本颜色是黑色,因为背景图像是浅色的。 当用户访问黑暗主题的网站时,事情变得丑陋。在深色主题上的文本颜色变成浅色,而背景图像仍然是浅色,这使得文本不可读。 见下文明暗主题中的文本呈现:

  • 在深色布景主题中,Navicat Data Modeler 对所有窗口、视图、菜单和控件使用较深的调色板。它适用于所有支持的 Windows 版本。 如要更改布景主题,请选择“工具”->“选项”->“常规”。然后,选择“深色”。

  • 在深色布景主题中,Navicat 对所有窗口、视图、菜单和控件使用较深的调色板。它适用于所有受支持的 Windows 版本。 如要更改布景主题,请选择“工具”->“选项”->“常规”。然后,选择“深色”。

  • 本文向大家介绍深色网络和深色网络之间的区别,包括了深色网络和深色网络之间的区别的使用技巧和注意事项,需要的朋友参考一下 深网 深度网络是搜索引擎无法访问的网络内容。例如,银行信息,政府机密数据,云中存在的数据。只有经过正确的身份验证,才能访问深度Web上的数据。 暗网 Dark Web是网站所有者匿名的网站。Dark Web通常用于非法活动。暗网无法通过常规浏览器/搜索引擎访问。需要专用软件才能访

  • 重新启动我的计算机后,我所有的VSCode主题根本没有被应用。无论文件类型、变量、函数、属性等…都没有被应用。 这里有一个例子: 本质上,只有VSCode本身改变了主题,而不是代码(彩色括号除外)。 我可以做什么来解决这个问题? 谢谢