选项项目选中时按状态更改背景颜色

时间:2018-02-01 20:07:56

标签: android

我想更改背景颜色,当我的菜单项状态是"按下"如下图所示:

Exmaple

那么如何实现呢?

我的菜单:

<?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"/>

1 个答案:

答案 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不可见,因为它是白色的,但是你仍然可以通过点击删除按钮的右侧来下载它。

delete delete_not_selected