我的应用程序中有菜单项,我想在单击时更改项目背景的颜色(请查看屏幕截图 - 单击项目 1)
我在这里只想要一种颜色 - 浅蓝色或深蓝色。但是,如您所见,第一项上有两个。
这是我的代码:
Activity 中的工具栏:
<android.support.v7.widget.Toolbar
xmlns:sothree="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_toolbar"
sothree:theme="@style/MyActionBar"
android:layout_alignParentTop="true"
style="@style/toolbarButton">
...
</android.support.v7.widget.Toolbar>
样式:
<style name="toolbarButton">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:clickable">true</item>
</style>
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/material_dark_blue</item>
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item>
<item name="android:centerX">@android:integer/config_shortAnimTime</item>
<item name="windowActionBar">false</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:textColor">@color/material_white</item>
<item name="android:popupMenuStyle">@style/CustomOverflowBack</item>
<item name="android:itemTextAppearance">@android:color/white</item>
</style>
list :
<application
android:name=".MyApplication"
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme">
非常感谢任何帮助。
更新:
添加 CustomOverflowBack
:
<style name="CustomOverflowBack" parent="@android:style/Widget.Holo.Light.ListPopupWindow">
<item name="android:popupBackground">@drawable/menu_item</item>
</style>
菜单项.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview_background_shape">
<stroke android:width="1dp" android:color="@color/material_dark_blue" />
<solid android:color="@color/actionbar_item_bg_color" />
</shape>
最佳答案
@Tom11 您必须为工具栏的弹出式覆盖声明自定义样式。
创建一个扩展 ThemeOverlay 的样式:
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@color/colorPrimaryDark</item>
<item name="colorControlHighlight">@color/colorAccent</item>
</style>
In above style replace @color/colorPrimaryDark with your background color and @color/colorAccent with your selected background color.
然后在您的工具栏声明中使用它。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
style="@style/toolbarButton"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
这将解决您的问题。
更新: 进行以下更改:
更改
android:background="?attr/colorPrimary"
至android:background="@color/material_dark_blue"
在上面的工具栏项中使用您的操作栏背景颜色。删除
<item name="android:background">@color/material_dark_blue</item>
来自您的 MyActionBar 样式。
因此工具栏和 MyActionBar 样式的更新代码如下:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/material_dark_blue"
style="@style/toolbarButton"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:theme="@style/MyActionBar"/>
<style name="MyActionBar"
parent="Widget.AppCompat.ActionBar">
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item>
<item name="android:centerX">@android:integer/config_shortAnimTime</item>
<item name="windowActionBar">false</item>
</style>
这最终应该可以工作。
关于android - 在 Android 悬停时设置菜单项背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39710245/