I'm using the Showcase
library to explain my application feature to the user. In some point I need to dim the whole ActionBar
to present another feature to the user.
For that I'm using the setAlpha(float num)
of the View
class. And so for doing that I need to get the actual view instance of my ActionBar
By the way, I'm using the support-7-appcompat
library that gives ActionBar support for older systems.
In the meantime I found this option, if you configure a custom view and add it to you ActionBar
using:
getSupportActionBar().setCustomView(v);
Then to get the View
of the ActionBar
you could do:
(View) activity.getSupportActionBar().getCustomView().getParent().getParent()
Is there a simpler or easier way to do that?
Android ActionBar is a menu bar that runs across the top of the activity screen in android. Android ActionBar can contain menu items which become visible when the user clicks the “menu” button.
You may otherwise add the action bar by calling requestFeature(FEATURE_ACTION_BAR) or by declaring it in a custom theme with the windowActionBar property. Beginning with Android L (API level 21), the action bar may be represented by any Toolbar widget within the application layout.
Custom Action Bar Layout The view layout consists of two ImageButtons that represent forward and back image buttons and a TextView in the center.
Yep. You can actually get the view by using this function:
public View getActionBarView() { Window window = getWindow(); View v = window.getDecorView(); int resId = getResources().getIdentifier("action_bar_container", "id", "android"); return v.findViewById(resId); }
Pretty much the way this works is that the actionbar container uses the id android.R.id.action_bar_container
, but this id is not public. Therefore we use getIdentifier() to retrieve this id and then the rest is simple.
I think this solution is more complete, handling both normal Activity and ActionBarActivity.
It also handles the case that the actionbar was set using a toolbar, but you need to implement it in the activity you've created:
public static View getActionBarView(final Activity activity) { if (activity instanceof IToolbarHolder) return ((IToolbarHolder) activity).getToolbar(); final String packageName = activity instanceof ActionBarActivity ? activity.getPackageName() : "android"; final int resId = activity.getResources().getIdentifier("action_bar_container", "id", packageName); final View view = activity.findViewById(resId); return view; } public interface IToolbarHolder { public android.support.v7.widget.Toolbar getToolbar(); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With