如何在 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
选项卡。
- 我在
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>
- 我在Toolbar.axml
中使用了这种风格
这是代码,请注意是 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
我注意到 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
选项卡。
- 我在
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>
- 我在Toolbar.axml 中使用了这种风格
这是代码,请注意是 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