简体   繁体   English

在Android中禁用菜单项的背景突出显示颜色

[英]Disable background highlight color of menu item in android

I added an item (with icon and text) into my application's menu. 我在应用程序的菜单中添加了一个项目(带有图标和文本)。

I have two images for the normal (nonpressed) state of the item and for the highlightened (pressed) state. 我有两个图像用于项目的正常(非按下)状态和突出显示(按下)状态。

This is my menu xml 这是我的菜单xml

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
         android:showAsAction="ifRoom|withText"
         android:title="New"
         android:icon="@drawable/menu_selector"
         android:id="@+id/add_channel"></item>-
</menu>

And this is the selector menu_selector.xml 这是选择器menu_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="false"
           android:state_pressed="false"
           android:drawable="@drawable/new_channel" />

    <item android:state_pressed="true"
          android:drawable="@drawable/book"/>

    <item android:state_selected="true"
          android:state_pressed="false"
          android:drawable="@drawable/book" />
</selector>

But this is not enough for me. 但这对我来说还不够。 When I press the item, it changes the image it contains but also a green glow effect highlights in the background. 当我按下该项目时,它会更改其中包含的图像,但背景中的绿色发光效果也会突出显示。

How can I disable or make invisible this glow effect? 如何禁用或使这种发光效果不可见?

You can create a layout with a ImageButton and a selector for its background to change the pressed state color. 您可以使用ImageButton和背景选择器创建布局,以更改按下状态的颜色。 Select this layout at menu your item : android:actionLayout="@layout/item_layout" 在菜单项中选择此布局: android:actionLayout="@layout/item_layout"

item_layout.xml item_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/tab_button"
        android:src="@drawable/ic_menu_item_icon" />

</LinearLayout>

tab_button.xml tab_button.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_enabled="false"
    android:drawable="@drawable/tab_button_background"/>
<item
    android:state_pressed="true"
    android:state_enabled="true"
    android:drawable="@drawable/tab_button_background_pressed" />
<item
    android:state_focused="true"
    android:state_enabled="true"
    android:drawable="@drawable/tab_button_background"
     />
<item
    android:state_enabled="true"
    android:drawable="@drawable/tab_button_background"
     />
</selector>

tab_button_background.xml tab_button_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid
        android:color="#9ec03b" />
</shape>

tab_button_background_pressed.xml tab_button_background_pressed.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid
        android:color="#dfff53" />
</shape>

menu.xml menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/add_channel"
        android:showAsAction="ifRoom|withText"
        android:actionLayout="@layout/item_layout"
        android:title="New">
    </item>
</menu>

如果您在项目上有一个点击侦听器,则可以将此代码放在处理程序中:

menuItem.setChecked(false);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM