Bilbo Baggins
Bilbo Baggins

Reputation: 3692

Android ActionBar Menu: Prevent onPressed Color

In my android app, when I press the actionbar menu, it gets a blueish glow to it. How can I prevent it from happening?

Is it possible to do so for only one menu and keep it running for others?

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

Upvotes: 1

Views: 445

Answers (2)

Navaneeth
Navaneeth

Reputation: 883

You can also create a layout for each menu item by actionLayout attribute like below

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

and my action layout for one of the menu item *menu_folder_options_layout.xml* is, where I use the selector

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

Upvotes: 2

Navaneeth
Navaneeth

Reputation: 883

You can change the selector of a particular action bar item by setting a custom ActionView in the code:

@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;
}

you can use transparent color for pressed state in 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>

Upvotes: 4

Related Questions