如何在 android api >=Kitkat 上修复 BarTextColor 而不使用 styles.axml

How to fix BarTextColor on android api >=Kitkat without using styles.axml

我注意到 Android >= KitKat,我无法更改工具栏项目上的默认文本颜色。我只能改变背景颜色。我在这里使用 styles.axml 尝试了一切。 我的工具栏背景颜色是白色,文本和菜单图标必须是 blue.On KitKat,包括文本在内的所有内容都是白色的。 (在我的 styles.axml 上,我没有将任何颜色设置为白色。所以我想这是默认设置。) 以下解决方案适用于所有其他 SDK -> App.xaml

 <Style TargetType="NavigationPage">
        <Setter Property="BarBackgroundColor" Value="ffffff"/>
        <Setter Property="BarTextColor" Value="#1c4d9e"/>
  </Style> 

--我的解决方法-- 因为我无法使用样式实现颜色更改。xaml。 - 注意- 我只是作为一个极端的解决方案来检测 SDK 是否为 KitKat 并且只修改工具栏的背景颜色。因为文字是白色的。 我的目标是更改工具栏上每个单独元素的颜色,而不管 SDK

public void KitKat() 
      {
        var Check = DependencyService.Get<Interfaces.ISDK>();
        var a = Check.IsKitkat();
        if(a == true) 
        {
           new Setter {Property = NavigationPage.BarBackgroundColorProperty, Value = Color.DarkRed};
           new Setter {Property = NavigationPage.BarTextColorProperty, Value = Color.White};

         }

      }

工具栏示例

<ContentPage.ToolbarItems>
        <ToolbarItem  Text="Help" 
              Order="Primary"  Command="{Binding HelpCommand}" />
           <ToolbarItem  AutomationProperties.IsInAccessibleTree="true"  
          Text="Next" Order="Secondary"  Command="{Binding NextCommand}" />
       </ContentPage.ToolbarItems>

首先,我通过以下操作更改了Help标签。

1.I在colors.xml

中添加secondary_text

<color name="secondary_text">#DC143C</color>

2.I在<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">中添加<item name="actionMenuTextColor">@color/secondary_text</item>style.xml

有我在android8.1和android4.4运行运行时的截图

Android 8.1

Android 4.4

然后,我通过以下操作更改了Next选项卡。

  1. 我在styles.xml新建一个样式,有代码

 <style name="my.Base" parent="Theme.AppCompat.Light.DarkActionBar">

    <item name="colorPrimary">#488FCE</item>
    <item name="colorPrimaryDark">#488FCE</item>

    <item name="android:windowNoTitle">false</item>
    <item name="android:windowActionBar">true</item>

    <item name="android:textColorPrimary">#ff0000</item>
    <item name="android:textColorPrimaryInverse">#ff0000</item>
    
    </style>

  1. 我在Toolbar.axml
  2. 中使用了这种风格

这是代码,请注意是 app:popupTheme="@style/my.Base" ,而不是 android:popupTheme

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

app:popupTheme="@style/my.Base"

/>

有我在android8.1和android4.4运行时的截图。

Android 8.1

Android 4.4

有我的demo,你可以参考一下。 https://github.com/851265601/ToolbarItemDemo1