作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我花了过多的时间试图弄清楚如何将一些简单的样式应用到工具栏,但我完全被难住了。具体来说,我想更改标题和副标题的颜色以及溢出菜单图标(三个点)。我可以在布局中成功设置文本颜色,但在主题中不能,我不知道为什么。
<android.support.v7.widget.Toolbar
theme="@style/Toolbar"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/orange"
app:popupTheme="@style/AppTheme.PopupOverlay"
/>
样式.xml:
<style name="Toolbar" parent="Widget.AppCompat.Toolbar">
<item name="titleTextStyle">@style/ToolbarTitle</item>
<item name="titleTextAppearance">@style/ToolbarTitleTextAppearance</item>
<item name="popupTheme">@style/AppTheme.PopupOverlay</item>
</style>
<style name="ToolbarTitle" parent="Base.TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="titleTextAppearance">@style/ToolbarTitleTextAppearance</item>
<item name="android:textColor">#FF0000</item>
</style>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light">
</style>
PopupOverlay 主题应用于溢出菜单弹出窗口,因此显然应用了 Toolbar 主题,但 TextAppearance 不起作用,文本仍然是黑色。我尝试过各种各样的替代形式,但没有任何乐趣。当我尝试某事但它不起作用时,我不知所措,甚至不知道从哪里开始寻找理解原因。欢迎提供有关调试此类主题问题的提示!将几个小时浪费在应该非常简单的 UI 样式更改上,这让我深感沮丧,但布局、样式、主题和 AppCompat 的多个方面让我完全困惑和猜测。
最佳答案
以下应该适合您:
styles.xml
<style name="Base_ToolbarStyle">
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="android:background">?colorPrimary</item>
<item name="android:theme">@style/Base_ToolbarTheme</item>
<item name="titleTextAppearance">@style/CustomTitleTextAppearance</item>
<item name="subtitleTextAppearance">@style/CustomSubTitleTextAppearance</item>
</style>
<style name="Base_ToolbarTheme">
<!-- Color used for the title of the Toolbar - as long as not overridden -->
<item name="android:textColorPrimary">@color/pink_500_primary</item>
<!-- Used to color back button and three dots -->
<item name="android:textColorSecondary">@color/yellow_500_primary</item>
</style>
<style name="CustomTitleTextAppearance" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="android:fontFamily">@string/ff_roboto_condensed</item>
<item name="android:textSize">16sp</item>
<item name="android:textColor">@color/amber_500_primary</item>
<item name="android:textStyle">bold</item>
</style>
<style name="CustomSubTitleTextAppearance" parent="TextAppearance.Widget.AppCompat.Toolbar.Subtitle">
<item name="android:fontFamily">@string/ff_roboto_condensed</item>
<item name="android:textSize">14sp</item>
<item name="android:textColor">@color/pink_500_primary</item>
<item name="android:textStyle">italic</item>
</style>
layout.xml
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
style="@style/Base_ToolbarStyle"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:elevation="4dp" />
结果:
注意:我故意将样式做得尽可能丑陋。 :<
那么你是怎么弄清楚这个的。那么在 textAppearances
的情况下,您只需查看父类,例如TextAppearance.Widget.AppCompat.Toolbar.Title
。在那里你最终会找到这样的东西:
<style name="TextAppearance.Material.Widget.ActionBar.Title"
parent="TextAppearance.Material.Title">
<item name="textSize">@dimen/text_size_title_material_toolbar</item>
<item name="textColor">?attr/textColorPrimary</item>
</style>
再次单击父项会显示以下内容:
<style name="TextAppearance.Material">
<item name="textColor">?attr/textColorPrimary</item>
<item name="textColorHint">?attr/textColorHint</item>
<item name="textColorHighlight">?attr/textColorHighlight</item>
<item name="textColorLink">?attr/textColorLink</item>
<item name="textSize">@dimen/text_size_body_1_material</item>
<item name="fontFamily">@string/font_family_body_1_material</item>
</style>
总而言之,我们知道现在可以调整的所有属性。将样式应用于 Toolbar
而不是主题或多或少是一些反复试验过程的结果。 ;)
关于android - 如何将主题应用到 Android 工具栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36554879/
我是一名优秀的程序员,十分优秀!