问题
I am using a ToolBar at the top at present and want to replace the default back button with a home button. But when I add item, it always adds to the right. I don't see any layout_gravity options to choose either. Is there a way to do this?
MainActivity
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_delete);
toolbar = (Toolbar)findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(" Testing");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.home_icon_empty, menu);
return true;
}
home_icon_empty.xml
<item
android:id="@+id/homepage"
android:orderInCategory="100"
android:title="HOME"
android:icon="@drawable/home_icon"
app:showAsAction="always"
/>
<item
android:id="@+id/homepage1"
android:orderInCategory="200"
android:title="HOME"
android:icon="@drawable/home_icon"
app:showAsAction="always"
/>
activity_main.xml
<include
android:id="@+id/app_bar"
layout="@layout/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
app_bar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary">
</android.support.v7.widget.Toolbar>
Current Toolbar output:
Expected Toolbar output:
Image after new edit:
回答1:
Set as NavigationIcon:
Drawable drawable = ContextCompat.getDrawable(context, R.drawable.your_drawable)
toolbar.setNavigationIcon(drawable);
setSupportActionBar(toolbar);
回答2:
Try this
toolbar.setNavigationIcon(R.drawable.your_icon);
Use it before setting support action bar. And don't call this
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Or at least do
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
Try it out. Some of this will work.
回答3:
Add your drawable asset with size as per Material design guide and call below method in Activity onCreate
private void setUpToolBar() {
setSupportActionBar(toolbar);
//Set Home screen icon
getSupportActionBar().setHomeAsUpIndicator(R.drawable.home_screen_icon);
//Enable Home icon
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//Toolbar title
getSupportActionBar().setTitle(getString(R.string.app_name));
//Set toolbar as action bar
setSupportActionBar(toolbar);
}
回答4:
You can also:
mToolbar.setLogo( yourLogoID );
or you can:
mToolbar.setBackground( ContextCompat.getDrawable( yourContext, urBackgroundID );
where
mToolbar = yourToolbar;
mToolbar = findViewById(R.id.your_toolbar);
// or, if your toolbar get setted by a superclass
mToolbar = (Toolbar) getSupportActionBar();
your style should be: Blablabla.NoActionBar then in xml layout include your toolbar
If you are using a Drawer to show left Menu when Left Swiped or Home Button Clicked then you should use one of above methods (If you don't want to superclass all DrawerLayout lul)
bb
来源:https://stackoverflow.com/questions/34292674/change-toolbar-default-icon-on-the-left