How to get ActionBar view?

Emil Adz picture Emil Adz · Nov 16, 2013 · Viewed 27.2k times · Source

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.

Update

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?

Answer

idunnololz picture idunnololz · Jan 14, 2014

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.