setHomeButtonEnabled这个小于4.0版本的默认值为true的。
但是在4.0及其以上是false,该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击 false 不可以点击。
actionBar.setDisplayHomeAsUpEnabled(true)
// 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP
actionBar.setDisplayShowHomeEnabled(true)
//使左上角图标是否显示,如果设成false,则没有程序图标,仅仅就个标题,否则,显示应用程序图标,对应id为 android.R.id.home,对应ActionBar.DISPLAY_SHOW_HOME
actionBar.setDisplayShowCustomEnabled(true)
// 使自定义的普通View能在title栏显示,即actionBar.setCustomView能起作用,对应 ActionBar.DISPLAY_SHOW_CUSTOM
actionBar.setDisplayShowTitleEnabled(true)
//对应ActionBar.DISPLAY_SHOW_TITLE。
其中setHomeButtonEnabled和setDisplayShowHomeEnabled共同起作用,
如果setHomeButtonEnabled设成false,
即使setDisplayShowHomeEnabled设成true,图标也不能点击
点击事件处理
setSupportActionBar(mCommodityToolbar);//设置使用Toolbar
getSupportActionBar().setDisplayHomeAsUpEnabled(true);//添加返回按钮
getSupportActionBar().setDisplayShowTitleEnabled(false);//自定义了Title后不再显示默认标题
mCommodityToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { finish(); }});//点击返回
mCommodityToolbar.setTitle(null);
Toolbar设置toggle
toolbar设置按钮颜色
toolbar的xml中先引用style
```
app:theme="@style/toolBar_btn_style"
```
创建该style
```
<item name = "colorControlNormal">#ffffff</item>
```
动态更新Toolbar Menu以及Menu中同时显示文字和图标
我们经常会有这样的需求,在切换Fragment或者点击某个按钮后动态更新Toolbar上Menu项.但是onCreateOptionsMenu方法只在创建Activity的时候调用一次,以后就不再调用了,所以就不能在onCreateOptionsMenu中做处理了。
不过系统提供了另外的一个方法onPrepareOptionsMenu,我们可以在这个方法中做一些逻辑处理,然后在需要更新Menu的地方调用invalidateOptionsMenu方法。
```
@Override public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override public boolean onPrepareOptionsMenu(Menu menu){
if (mIsEditStatus) {
menu.findItem(R.id.action_share).setVisible(false);
menu.findItem(R.id.action_edit).setVisible(true);
} else {
menu.findItem(R.id.action_share).setVisible(true);
menu.findItem(R.id.action_edit).setVisible(false);
}
return super.onPrepareOptionsMenu(menu);
}
invalidateOptionsMenu(); //重新绘制menu
```
另外的一个需求是在Menu中要显示图标和文字,虽然在menu.xml文件中配置了图标和文字,但是在有图标的情况下文字是不会显示的,即使设置 app:showAsAction="always|withText" 但是我在运行的时候发现并没有显示文字,处理方法是通过另外一个属性实现app:actionLayout.
首先menu.xml定义如下:
然后还要在onCreateOptionsMenu中重写一下Menu的点击事件,现在onCreateOptionsMenu方法是这样的:
```
@Override public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu, menu);
final MenuItem item = menu.findItem(R.id.action_edit);
item.getActionView().setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v){
onOptionsItemSelected(item);
}
});
return super.onCreateOptionsMenu(menu);
}
```
各种样式修改(颜色样式等)
https://www.cnblogs.com/oyjt/p/4762640.html