我在应用程序的菜单中添加了一个项目(带图标和文字)。
我有两个图像用于项目的正常(非压缩)状态和高亮(按下)状态。
这是我的菜单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>
这是选择器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>
但这对我来说还不够。当我按下该项目时,它会更改它包含的图像,但背景中也会突出显示绿色发光效果。
如何禁用或隐藏此发光效果?
答案 0 :(得分:2)
您可以使用ImageButton和背景选择器创建布局,以更改按下的状态颜色。
在您的项目菜单中选择此布局:
android:actionLayout="@layout/item_layout"
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
<?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
<?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
<?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 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>
答案 1 :(得分:0)
如果项目上有点击监听器,您可以将此代码放在处理程序中:
menuItem.setChecked(false);