语境
我正在使用最新的 AppCompat v7 lib (21.0.0),并且我已将我的应用程序从 ActionBar 迁移到 ToolBar
问题
- ToolBar 中的图像自动接收与 ToolBar 相同的背景
目前 SearchBox 是在操作栏上设置的自定义视图(来自以前的实现)我计划切换到 SearchView 并相应地设置它的样式,但我仍然对我现在面临的问题非常感兴趣。
- 当长按工具栏中的菜单项时,会出现带有提示文本的 toast,并且文本具有与工具栏相同的背景。
我怎样才能避免这种情况?
这是我的工具栏布局以及样式和主题
布局 v_toolbar.xml
<?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/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/MyActionBarStyle"/>
值/样式.xml
<style name="MyActionBarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:background">@color/green</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="background">@color/green</item>
<item name="windowActionBarOverlay">true</item>
</style>
主题
<style name="MyTheme" parent="AppBaseTheme">
<!-- Here we setting appcompat’s actionBarStyle -->
<!-- <item name="actionBarStyle">@style/MyActionBarStyle</item> -->
<item name="windowActionBar">false</item>
<!-- ...and here we setting appcompat’s color theming attrs -->
<item name="colorPrimary">@color/green</item>
<item name="colorPrimaryDark">@color/green_dark</item>
</style>
问题 1 的解决方法 1
第一个问题的解决方法是在 ImageView 上设置透明背景
android:background="@color/transparent"
这并不能解决吐司问题。
解决这两个问题
我为工具栏设置了背景
<?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/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/green"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/MyActionBarStyle"/>
而且我不再为主题设置背景。
<style name="MyActionBarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="windowActionBarOverlay">true</item>
</style>
正如 Chris Banes 所指出的,可以为工具栏创建一种样式,而不是声明 android:background。
这解决了我的问题,但是我似乎还有另一个问题,即没有应用 popupTheme 并且我的 ShareActionMenuItem 下拉菜单没有带有黑色文本的白色背景。在此处查看另一个问题:AppCompat ToolBar popupTheme not used in the ShareAction MenuItem
也许这是 appcompat 库中的一个错误。