Using a selector for a MenuItem in the ActionBar

后端 未结 3 1750
时光说笑
时光说笑 2020-12-17 05:42

I\'m using ActionBarSherlock. I have a MenuItem, and I want to use a custom selector with only that MenuItem, not the others in the ActionBar. This is the menu code:

相关标签:
3条回答
  • 2020-12-17 06:02

    first you shall know, if you set android:selectableItemBackground in your holo style, the whole widget, i.e. a button, will have that background selector.

    if you just need to change your actionbar menuitem' s icon selector background, Here is a simple answer!

    just set android:actionBarItemBackground in your holo style!

    <style name="AppTheme.Dark" parent="android:Theme.Holo">
        <item name="android:actionBarItemBackground">@drawable/item_background_holo_light</item>
    </style>
    

    hope it helpful:-)

    0 讨论(0)
  • 2020-12-17 06:05

    Use Actionbar style generator, to style your style and download zip file

    In downloaded zip file open selectable_background_xxxx.xml (xxxx -> name given to your own style) file in "drawables" folder and change the drawable to nine-patch img or color code you want when pressed state is true.

    <item android:state_pressed="true" android:drawable="@color/your_color" /> 
    
    0 讨论(0)
  • 2020-12-17 06:14

    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.setPadding(16, 0, 16, 0);
        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;
    }
    

    Apply these styles if you want to change the selector for all action bar items:

    <style name="AppTheme" parent="@style/Theme.Sherlock">
        <item name="android:selectableItemBackground">@drawable/icon_place_selector</item>
        <item name="android:actionBarItemBackground">@drawable/icon_place_selector</item>
    </style>
    
    0 讨论(0)
提交回复
热议问题