Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to hide up button in actionbar

I would like to do an edit mode, in the style of the tablet gmail app. If the user presses the edit button on the actionbar, than I would like to show him/her an action view, that has a done button on the left side, and a delete button on the right.

I have an example that works without actionbarsherlock here: https://code.google.com/p/romannurik-code/source/browse/misc/donediscard

I would like to stick to actionbarsherlock, for compatibility reasons.

This is the way I solved it in onCreateOptionsMenu:

getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.white));
getSupportActionBar().setIcon(R.drawable.white);

for (int i = 0; i < menu.size(); i++) {
    menu.getItem(i).setVisible(false); }

getSupportActionBar().setDisplayHomeAsUpEnabled(false); does nothing, so I had to set the home icon to a white 1x1 pixel drawable.

I also had to set the background color of the actionbar, as the actionview's background color. If I had not, than the 1x1 home icon would have padding around it, and the original background color would be visible around the white home button.

Anyone got a better solution for this?

edit: I also had to change the style:

<style name="Theme.Styled" parent="Theme.Sherlock.Light">
        <item name="android:homeAsUpIndicator">@drawable/white</item>
        <item name="homeAsUpIndicator">@drawable/white</item>
</style>

Also..settings android:homeAsUpIndicator increased my min api level from 8 to 11 which is also an issue.

like image 468
berestom Avatar asked Feb 24 '13 18:02

berestom


1 Answers

If you're on API level 14 or above and are not using ActionbarSherlock, this code in onCreateOptionsMenu will disable the up button, remove the left caret, and remove the icon:

ActionBar actionBar = getActionBar();
if (actionBar != null) {
    actionBar.setHomeButtonEnabled(false); // disable the button
    actionBar.setDisplayHomeAsUpEnabled(false); // remove the left caret
    actionBar.setDisplayShowHomeEnabled(false); // remove the icon
}
like image 167
VinceFior Avatar answered Oct 14 '22 05:10

VinceFior