gpt4 book ai didi

android - 如何设置新工具栏的标题颜色?

转载 作者:IT老高 更新时间:2023-10-28 13:03:42 26 4
gpt4 key购买 nike

我正在使用新的 v7 工具栏,但终生无法弄清楚如何更改标题的颜色。我已将工具栏的@style 设置为在styles.xml 中声明的样式,并应用了带有textColor 的titleTextStyle。我错过了什么吗?我正在为 Lollipop 编写代码,但目前在 Kitkat 设备上进行测试。

styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>

<style name="ActionBar" parent="Theme.AppCompat">
<item name="android:background">@color/actionbar_background</item>
<item name="android:titleTextStyle">@style/ActionBar.TitleTextStyle</item>
</style>

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

</resources>

actionbar.xml:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar_actionbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
style="@style/ActionBar"/>

最佳答案

选项 1) 快速简便的方法(仅限工具栏)

从 appcompat-v7-r23 开始,您可以直接在 Toolbar 或其样式上使用以下属性:

app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"

如果您的最低 SDK 为 23 并且您使用原生 Toolbar,只需将命名空间前缀更改为 android

在 Java 中,您可以使用以下方法:

toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);

这些方法采用颜色 int 而不是颜色资源 ID!

选项 2) 覆盖工具栏样式和主题属性

布局/xxx.xml

<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:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.MyApp.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
style="@style/Widget.MyApp.Toolbar.Solid"/>

值/样式.xml

<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/actionbar_color</item>
<item name="android:elevation" tools:ignore="NewApi">4dp</item>
<item name="titleTextAppearance">...</item>
</style>

<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
<!-- Parent theme sets colorControlNormal to textColorPrimary. -->
<item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>

救命!我的图标也变色了!

@PeterKnut 报告这会影响溢出按钮、抽屉导航按钮和后退按钮的颜色。它还会改变 SearchView 的文本颜色。

关于图标颜色:colorControlNormal 继承自

  • android:textColorPrimary 用于深色主题(黑底白字)
  • android:textColorSecondary 用于浅色主题(白底黑字)

如果您将此应用到操作栏的主题,您可以自定义图标颜色。

<item name="colorControlNormal">#de000000</item>

在 r23 之前的 appcompat-v7 中存在一个错误,要求您也像这样覆盖 native 对应项:

<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>

帮助!我的 SearchView 是一团糟!

注意:此部分可能已过时。

由于您使用的搜索小部件由于某种原因使用了与 appcompat-v7 中包含的不同的后退箭头(不是视觉上的,技术上的),因此您必须在 应用程序的主题中手动设置它。支持库的可绘制对象被正确着色。否则它会一直是白色的。

<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>

至于搜索 View 文本...没有简单的方法。在挖掘了它的源代码后,我找到了一种进入 TextView 的方法。我还没有测试过,所以如果这不起作用,请在评论中告诉我。

SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color

奖励:覆盖 ActionBar 样式和主题属性

默认操作 appcompat-v7 操作栏的适当样式如下所示:

<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
<item name="background">@color/actionbar_color</item> <!-- No prefix. -->
<item name="elevation">4dp</item> <!-- No prefix. -->
<item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>

<style name="Theme.MyApp" parent="Theme.AppCompat">
<item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
<item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>

关于android - 如何设置新工具栏的标题颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26852108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com