2013-04-02 18 views
6

私のアプリケーションのメニューに項目(アイコンとテキスト付き)を追加しました。アンドロイドのメニュー項目の背景色を無効にする

私は、アイテムの通常(非押し)状態と強調表示された(押された)状態の2つの画像を持っています。

これは私のメニュー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

可能重複シャーロックアクションバーのメニュー項目から青い光を取り除く?](http://stackoverflow.com/questions/15705878/how-to-remove-blue-glow-from-sherlock-action-bar-menu-item) – guness

+0

可能な複製の[削除]アクションバーのホームアイコンで押した効果](http://stackoverflow.com/questions/23369749/remove-pressed-effect-on-action-bar-home-icon) – Fllo

答えて

2

ImageButtonとその背景のセレクタを使用してレイアウトを作成し、押された状態の色を変更することができます。 メニューであなたのアイテムをこのレイアウトを選択します。

<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> 
item_layout.xml android:actionLayout="@layout/item_layout"

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> 
0

あなたが項目をクリックするリスナーを持っている場合は、ハンドラにこのコードを置くことができます:[どのように

menuItem.setChecked(false); 
関連する問題