Reputation: 279
I am implementing Toolbar along and Navigation drawer.I am customized my tool bar with my own views.I have my own menu(Hamburger) icon in my toolbar to open navigation drawer and I am showing badge count on my menu icon(Hamburger).So i would like to hide default Hamburger icon.
I have tried like this:
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(false);
Please help me.Thanks in advance.
Upvotes: 6
Views: 6579
Reputation: 1838
This works for me:
public void setLogo(String imageUrl) {
ViewGroup toolbarView = (ViewGroup) toolbar.findViewById(R.id.toolbar);
// set an arbitrary logo so the support library adds an ImageView to the toolbar.
// without this, there would be no ImageView elements in the toolbar
// and the following loop would not work
// `empty_drawable` is a simple rectangle of size 100x100 with a bg color
// matching that of the toolbar
// the size really matters because the smaller you set this image, the next logo
// you set will be of that size. If your arbitrary drawable is of size 1x1, then
// the next logo you set will be of the same size. At least that is what happens
// for me when I load an image with Glide.
// Your drawable should have a background color too. I chose the toolbar's
// background color. If you don't set a background color, your app would crash on Kitkat.
toolbar.setLogo(R.drawable.empty_drawable);
for (int i = 0; i < toolbarView.getChildCount(); i++) {
if ((toolbarView.getChildAt(i) instanceof ImageView)) {
ImageView logoView = (ImageView) toolbarView.getChildAt(i);
if (!TextUtils.isEmpty(imageUrl)) {
// this way I can download an image and set the logo that way
Glide.with(MainActivity.this).load(imageUrl).into(logoView);
// I do this because there is no space between logo and the toolbar title
logoView.setPadding(0, 0, 30, 0);
// and this is because of the `else` block
logoView.setVisibility(View.VISIBLE);
} else {
// pass null to `setLogo()` to hide the logo
logoView.setVisibility(View.GONE);
logoView.setPadding(0, 0, 0, 0);
}
break;
}
}
}
And this is my toolbar:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:animateLayoutChanges="true"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:title="@string/app_name"
tools:ignore="UnusedAttribute" />
The android:animateLayoutChanges="true"
part makes all this really nice.
And tools:ignore="UnusedAttribute"
is because my app's minimum SDK is set to 9.
Upvotes: 1
Reputation: 181
call .setDrawerIndicatorEnabled(false);
on your ActionBarDrawerToggle
Upvotes: 18
Reputation: 4123
Try this in your activity's onCreate:
getActionBar().setIcon(
new ColorDrawable(getResources().getColor(android.R.color.transparent)));
If you're using the AppCompat, replace getActionBar
with getSupportActionBar
.
Upvotes: 0