我想更改背景颜色,当我的菜单项状态是"按下"如下图所示:
那么如何实现呢?
我的菜单:
<?xml version="1.0" encoding="utf-8"?>
<item android:id="@+id/detail_edit_item"
android:title="@string/edit"
android:icon="@drawable/ic_edit_white"
app:showAsAction="always"/>
<item android:id="@+id/detail_delete_item"
android:title="@string/delete"
android:icon="@drawable/ic_delete_white"
app:showAsAction="always"/>
答案 0 :(得分:0)
以下是您可以使用的解决方法: 对于API级别11或更高级别,您可以使用工具栏小部件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.test.myapplication.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Titel"
android:layout_alignParentLeft="true" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/background_selector"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
</android.support.v7.widget.Toolbar>
要使用此工具栏,您必须为活动设置NoActionBarTheme
<activity android:name=".MainActivity"
android:theme="@style/Theme.AppCompat.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我刚刚在本例中使用了带有自定义删除按钮的ImageButton,之后您可以编写选择器来处理按钮按下,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/delete" android:state_selected="true"></item>
<item android:drawable="@drawable/delete" android:state_pressed="true"></item>
<item android:drawable="@drawable/delete_not_selected"></item>
您可以将此代码保存在drawable文件夹下作为background_selector.xml,这应该可以正常工作。你可以在下面找到这两个图像但是delete_not_selected不可见,因为它是白色的,但是你仍然可以通过点击删除按钮的右侧来下载它。