我在我的应用程序的每个Activity
使用工具栏类。
我有两个版本的工具栏布局,但它们只在TextView和EditText中有所不同,包含在RelativeLayout中。
这是toolbar.xml的代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:theme="@style/AppTheme.Toolbar"
android:popupTheme="@style/AppTheme.Toolbar.LightPopup"/>
我使用android:theme
和android:popupTheme
属性玩了很多次,但通常会得到相同的结果(如下所示),而不是我需要的。
在AndroidManifest.xml中,所有活动都使用android:theme="@style/AppTheme"
最后,我的v21\styles.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
<style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:background">?android:attr/colorPrimary</item>
</style>
<style name="AppTheme.Toolbar.LightPopup"parent="ThemeOverlay.AppCompat.Light">
<item name="android:background">@color/material_grey_200</item>
</style>
<style name="AppTheme.TextAppearance.ExtraLarge" parent="TextAppearance.AppCompat.Large">
<item name="android:textSize">30sp</item>
</style>
相比之下,它在Youtube应用程序中的外观(以及许多其他应用程序,不仅仅来自Google)
我希望至少使提示的背景保持一致(最好是灰色)。 如果可能,我还想控制弹出工具栏菜单的颜色。 我在SO中尝试了几种解决方案(特别是玩风格)并且我自己尝试了,但没有任何帮助。 如果您有任何想法如何解决,请与我分享。 提前谢谢。
UPD:除了我之外没有人回答这个问题,我最好接受我的回答,因为这对我很有帮助。 Hovewer,如果您有一些补充和澄清,请随时分享。例如,我仍然不知道为什么将android:theme
更改为style
修复所有内容。
答案 0 :(得分:0)
我终于想出了自己的解决方案。 事实证明,修复我的工具栏布局需要两个步骤。 1)在工具栏xml布局中:
android:theme
替换为style
这导致:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
style="@style/AppTheme.Toolbar"/>
2)在styles.xml
文件中,将下一个项目添加到工具栏样式:
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
(这将设置弹出窗口,就像上面的Youtube应用程序一样)<item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
(这会将标题和其他工具栏元素设置为白色)同时删除工具栏弹出式样式。 结果如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
<style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:background">?android:attr/colorPrimary</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>
<style name="AppTheme.TextAppearance.ExtraLarge" parent="TextAppearance.AppCompat.Large">
<item name="android:textSize">30sp</item>
</style>
</resources>
我希望这会帮助某人,因为它帮助了我。