Android浅色/深色主题操作栏文字

时间:2019-09-13 18:53:39

标签: android material-design android-toolbar material-components material-components-android

我正在我的游乐场Android应用程序中实现一个深色主题,并且正在努力使操作栏文本颜色为白色。

下面是我的风格和颜色。操作栏的背景遵循colorPrimary,这很棒。但是,两种颜色(浅色和深色)都是非常暗的颜色,并且希望操作栏文本颜色始终为白色。由于我现在将DayNight.NoActionBar用作父级,因此它是黑色的,是浅色的,白色是深色的。我在操作栏上有一些不同的实例,因此我不想不必更改每个单独的实例,而只是在样式中对其进行定义。我该怎么做?

styles.xml

<style name="DarkThemeApp" parent="@style/Theme.MaterialComponents.DayNight.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="colorError">@color/colorError</item>
    <item name="android:textColor">?android:attr/textColorPrimary</item>
</style>

night \ colors.xml

<resources>
    <color name="colorPrimary">#3d85c6</color>
    <color name="colorPrimaryDark">#002e72</color>
    <color name="colorAccent">#e66f00</color>
    <color name="colorYellow">#FFE800</color>
    <color name="colorError">#E53935</color>
</resources>

values \ colors.xml

<resources>
    <color name="colorPrimary">#00348e</color>
    <color name="colorPrimaryDark">#002e72</color>
    <color name="colorAccent">#e66f00</color>
    <color name="colorYellow">#FFE800</color>
    <color name="colorError">#E53935</color>
</resources>

5 个答案:

答案 0 :(得分:1)

使用材质主题,您可以使用不同的选项来自定义Toolbar中使用的文本颜色

  • 使用 android:theme 覆盖仅Toolbar
  • 的默认值
<com.google.android.material.appbar.MaterialToolbar
    android:theme="@style/MyThemeOverlay_Toolbar"
    ...>

并使用:

  <style name="MyThemeOverlay_Toolbar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
    <!-- color used by the toolbar title -->
    <item name="android:textColorPrimary">@color/secondaryColor</item>
    <!-- color used by navigation icon and overflow icon -->
    <item name="colorOnPrimary">@color/secondaryColor</item>
  </style>
  • 在您的Toolbar
  • 中设置样式
<com.google.android.material.appbar.MaterialToolbar
    style="@style/MyToolbar"
    .../>

然后使用 materialThemeOverlay 覆盖默认值(它需要材料组件库版本1.1.0):

  <!-- Toolbar -->
  <style name="MyToolbar" parent="Widget.MaterialComponents.Toolbar">
    <item name="materialThemeOverlay">@style/MyThemeOverlay_Toolbar</item>
  </style>

  <style name="MyThemeOverlay_Toolbar" parent="">
    <item name="android:textColorPrimary">@color/secondaryColor</item>
    <item name="colorOnPrimary">@color/secondaryColor</item>
  </style>

enter image description here enter image description here

答案 1 :(得分:0)

首先,将这三种添加到您的主要样式中(您可以根据需要命名样式):

DataAccess.Select

然后定义这些样式:

<item name="toolbarStyle">@style/ToolbarStyle</item>
<item name="actionOverflowButtonStyle">@style/ToolbarStyle.Overflow</item>
<item name="toolbarNavigationButtonStyle">@style/Toolbar.Button.Navigation.Tinted</item>

答案 2 :(得分:0)

在您的styles.xml中使用此代码

<style name="DarkThemeApp" parent="Theme.AppCompat.DayNight.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBarStyle</item>
    </style>

    <style name="MyActionBarStyle" parent="Theme.AppCompat.DayNight.DarkActionBar">
        <item name="android:titleTextStyle">@style/MyActionBarTitleTextStyle</item>
    </style>

    <style name="MyActionBarTitleTextStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/white</item>
    </style>

答案 3 :(得分:0)

我认为这个问题的答案可能会有所不同,具体取决于您在应用中使用的其他组件。就我而言,以下是可行的解决方案:

StaticInterfaceInsideInnerClass中定义这三种样式

styles.xml

,然后将其设置为您的主题:

  <style name="ToolbarStyle" parent="@style/Widget.MaterialComponents.Toolbar">
    <item name="titleTextColor">@android:color/white</item>
    <item name="android:background">@color/primary</item>
  </style>

  <style name="ToolbarStyle.Overflow" parent="@style/Widget.AppCompat.ActionButton.Overflow">
    <item name="android:tint">@android:color/white</item>
  </style>

  <style name="ToolbarStyle.DrawerIcon" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="color">@android:color/white</item>
  </style>

答案 4 :(得分:0)

在新版Android Studio中,我们有两个用于主题颜色的文件。要更改深色主题,您应该使用以下文件:

app:backgroundTint="@color/white"

对于日版本:

docker commit --change="CMD [\"java\", \"-jar\", \"/tmp/demo.jar\"]" interesting_jang ghaylensaada/demo:version2