2014-01-17 75 views
1

在我的android應用程序中,當我按下操作欄菜單時,它會得到一個藍色的光芒。我怎樣才能防止它發生?Android ActionBar菜單:防止onPressed顏色

是否可以這樣做只有一個菜單,並保持其他人運行?

<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar"> 
    <item name="android:background">@drawable/action_bar_background</item> 
    <item name="android:selectableItemBackground">@android:color/transparent</item> 
</style> 
+1

您需要更改style.xml樣式標籤的一個動作佈局:<項目名稱=「android:selectableItemBackground」> @ android:color/transparent –

+0

@shylendra它可以只爲一個菜單而不是爲其他人完成嗎? –

+0

@shylendra我添加了代碼(查看我的編輯),但我仍然得到藍色的光芒。 –

回答

4

您可以通過在代碼中設置的自定義更改的ActionView特定動作欄項目的選擇:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
getSupportMenuInflater().inflate(R.menu.activity_main, menu); 
MenuItem menuItem = menu.findItem(R.id.menu_include_location); 
ImageView image = new ImageView(this); 
image.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
     LayoutParams.MATCH_PARENT)); 
image.setImageResource(R.drawable.ic_launcher); 
image.setBackgroundResource(R.drawable.icon_place_selector); 
image.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     // ... 
    } 
}); 
menuItem.setActionView(image); 
return true; 
} 

可以使用透明色爲icon_place_selector.xml按下狀態,

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- Pressed --> 
<item android:state_pressed="true" android:drawable="@android:color/transparent" /> 
</selector> 
+0

我添加了你的代碼,但現在我的共享菜單已經消失。 –

+1

你使用的是 image.setImageResource(R.drawable.ic_launcher);在你的代碼中。 不僅你應該使用的選擇器 image.setImageResource(R.drawable.ic_launcher);和 image.setBackgroundResource(R.drawable.icon_place_selector); – Navaneeth

+0

:)輝煌,它的工作!謝謝。它也可以通過樣式完成嗎? –

2

您還可以通過actionLayout屬性爲每個菜單項創建佈局,如下所示

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
    android:id="@+id/search_options" 
    android:actionLayout="@layout/search_layout" 
    android:icon="@drawable/app_bar_icon_search" 
    android:showAsAction="ifRoom|collapseActionView" 
    android:title="@string/menu_home" 
    android:visible="false"/> 
<item 
    android:id="@+id/current_folder_options" 
    android:showAsAction="ifRoom" 
    android:title="@string/menu_folder_options" 
    android:actionLayout="@layout/menu_folder_options_layout" /> 
<item 
    android:id="@+id/menu_slide_out" 
    android:actionLayout="@layout/ab_insigh_icon" 
    android:showAsAction="always" 
    android:title="@string/menu_slide"/> 

</menu> 

和我的菜單項* menu_folder_options_layout.xml *是,在這裏我用的是選擇

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" > 
<ImageButton 
    android:id="@+id/menu_option_image" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:src="@drawable/app_bar_icon_folder_options" 
    android:background="@drawable/appbar_press_selector" /> 
</RelativeLayout> 
+0

謝謝,我試過了,它看起來與Java解決方案一樣,但是當我點擊它時沒有任何反應。我試圖給ImageButton添加'onClick'和'clickable'屬性,但它使應用程序崩潰。 –