I have created a new project in eclipse with the navigation drawer and instead of the three lines icon on the top left of the screen I have the back arrow icon. I have found nothing on stack over flow which seems to help.
I have tried to change the setDisplayHomeAsUpEnabled and setHomeButtonEnabled but it does not help
here is a part of the code (by the way its the default code from eclipse)
any one have and idea?
I believe you can try setting custom activity back button to Hamburger button.
Here is the code.
So you can change it programmatically easily by using homeAsUpIndicator() function that added in android API level 18 and upper.
ActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);
If you use support library
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);
You can change your styles.xml file to replace the navigation drawer icon adding this code:
<item name="homeAsUpIndicator">#drawable/ic_drawer</item>
<item name="android:homeAsUpIndicator">#drawable/ic_drawer</item>
The ic_drawer icon (which you'll put in drawable folder) can be downloaded on the web.
To sync the state of the drawer indicator/affordance with the linked DrawerLayout just add code below to your activity
#Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
Related
I have set the homeAsUpIndicator to
<item name="homeAsUpIndicator">#drawable/ic_menu_icon</item>
globally in a stylesheet. Every Activity has the same icon now.
How can I change the icon in the ActionBar to be the left arrow (<-) again for one activity despite having it set globally in the stylesheet?
I tried to access android.R.drawable.ic_menu_back but I cannot access it (it seems it is private):
getSupportActionBar().setHomeButtonEnabled(false); // does not work
getSupportActionBar().setDisplayShowHomeEnabled(false); // does not work
// does not compile: getSupportActionBar().setHomeAsUpIndicator(android.R.drawable.ic_menu_back);
You can download this icon from the design google web page here it name is ic_arrow_back_white drop it into your drawable folder and then you would be able to acces it.
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_back_24dp);
I'm very, VERY new in android. So, I started with a simple application, created on min API 14, I personalized some strings and I started to modify the application drawer.
When I tried to debug my simple app and launch it on my Nexus 5 (updated to last stock lollipop), I have this little annoying bug, with this icons:
In all cases, when the navigation drawer is opened/closed it shows that ARROW, instead of changing between the "menu" icon and "arrow" icon.
What I'm doing wrong?
Searching for a solution, I found some lines in code, like this:
I don't know how to do... If you could explain me what's wrong, I'll be very happy.
You need to syncState() call of your ActionBarDrawerToggle object from onPostCreate():
#Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
My application uses ActionBarCompat library as well as the NavigationDrawer support library.
I use ActionBarDrawerToggle appcompat v7 to get the drawer. There are a custom search view on ActionBar. Like this:
But the drawer indicator shows wrongly, doesn't show the Back Arrow when action search view is expanded;
I want it to show like PlayStore application:
How can I do it? Thanks in advance.
There is simple and quick solution to this.
First, you should know now the android.support.v4.app.ActionBarDrawerToggle is deprecated.
You must replace that with android.support.v7.app.ActionBarDrawerToggle.
Here is an Example showing the same.
DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
this, mDrawerLayout, mToolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close
);
mDrawerLayout.setDrawerListener(mDrawerToggle);
After that use support Action Bar as shown here in this documentation and then your drawer indicator will show correctly also showing the Back Arrow when action search view is expanded.
Remember to use com.android.support:appcompat-v7:21.0.+" (Api level 21)
and android.support.v7.app.ActionBar
You can set up the support library using this guide.
AND after that your drawer indicator will perfectly look like this..!!!
You got that issue because you set (android:)homeAsUpIndicator in your theme. Remove that attribute will solve your problem.
This is not the arrow from ActionBarDrawerToggle. I think Google uses Toolbar as they do in google io app. On OnClick event they just change toolbar navigation icon with toolbar.setNavigationIcon(R.id.ic_up). And R.id.ic_up - is a custom arrow drawable.
For me none of solutions posted here in SO worked. I had to look under the hood of support library to find out why and when is the home icon set and I noticed few things. The main observation is that the icon is set in this function:
android.support.v7.widget.Toolbar#setNavigationIcon(android.graphics.drawable.Drawable)
on the line
mNavButtonView.setImageDrawable(icon);
If you are facing the same problem as I was and none of suggested solutions work (setting theme, trying to call setNavigationIcon on toolbar, setHomeAsUpIndicator on Actionbar or even something else), I suggest to locate function mentioned above and put breakpoint there. You can then see when the function is called and identify the last function call (from the Frame window in android studio) that sets up the icon. For me it was this activity life-cycle method syncing navigation drawer:
#Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
mToolbar.setNavigationIcon(R.drawable.ic_hamburger);
}
I simply added last line and it worked.
OK, that was a clumsy title :(
Here's the description of the problem. There are two Activities: MainActivity & PreferenceActivity.
The MainActivity has drawer set up (per tutorial) and working fine (behavior, three-line icon, everything).
The problem is that the PreferenceActivity also shows the R.drawable.ic_drawer, this is not as intended.
Intended behavior is to have < icon in the PreferenceActivity action bar.
The only changes to PreferenceActivity are:
onCreate() I have added getSupportActionBar().setDisplayHomeAsUpEnabled(true); and
I have overriden onOptionsItemSelected() (to handle android.R.id.home click to track some analytics).
I have tried suggestions from this question. Based on that, I have added setDrawerIndicatorEnabled(true); in the MainActivity.onResume() and have added setDrawerIndicatorEnabled(false); in MainActivity.onPause(), but w/o any effect.
Ideas hove to solve this?
Could it be that the setDrawerIndicatorEnabled(false) doesn't correctly revert the indicator because ActionBarSherlock defines the attribute for it (in its theme) as "homeAsUpIndicator" and not as "android.R.attr.homeAsUpIndicator" (as described here)?
The latest edit of the question (regarding ABS) got me thinking.
Since I had problems with drower icon not moving, I have added this to my theme (extending ABS theme):
<item name="android:homeAsUpIndicator">#drawable/ic_navigation_drawer</item>
Since actually this fixed the mentioned problem (of drawer icon not moving):
#Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
the attrib override in the theme was a leftover and was a root cause for < icon not showing on lower levels as it should, so removing the "android:homeAsUpIndicator" override fixed my problem.
I am using actionbar in my application.
I add backbutton on actionbar. On its click back function is called.
But left arrow which is usually displayed on actionbar is not getting displayed.
I am trying with following code:
getActionBar().setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
Use this code:
getActionBar().setDisplayHomeAsUpEnabled(true);
If you're using the support library to support Android pre-3.0 use this:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);