简介
ToolBar是Android5.0之后推出的用于取代ActionBar的新导航控件,由于其高定制性和灵活性,被应用于大量应用中,可以通过Toolbar设置导航栏图标,设置App的logo,支持设置标题和子标题,支持添加一个或多个的自定义控件,支持Action Menu。
基本使用
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary">
<!--自定义控件-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clock" />
</android.support.v7.widget.Toolbar>
然后到Activity中拿到Toolbar,并设置各种属性
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_score_analysis);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.mipmap.ic_drawer_home);//设置导航栏图标
toolbar.setLogo(R.mipmap.ic_launcher);//设置app logo
toolbar.setTitle("成绩分析");//设置主标题
setSupportActionBar(toolbar);
ActionBar ab = getSupportActionBar();
//使能app bar的导航功能
ab.setDisplayHomeAsUpEnabled(true);
myHandler=new MyHandler();
getInfo();
}
这里有几个需要注意的点:
- 我们使用ToolBar时需要先屏蔽掉系统原先的导航栏,也就是调用
supportRequestWindowFeature(Window.FEATURE_NO_TITLE); - 如果想要修改title,subtitle的字体大小,颜色等需要调用setTitleTextColor、setTitleTextAppearance、setSubtitleTextColor、setSubtitleTextAppearance等方法
- ToolBar很多属性在xml设置是没有效果的,只能通过代码手动设置
Action Menu
在toolbar_menu.xml中添加menu菜单项
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@id/action_search"
android:icon="@mipmap/ic_search"
android:title="@string/menu_search"
app:showAsAction="ifRoom" />
<item
android:id="@id/action_notification"
android:icon="@mipmap/ic_notifications"
android:title="@string/menu_notifications"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_item1"
android:title="@string/item_01"
app:showAsAction="never" />
<item
android:id="@+id/action_item2"
android:title="@string/item_02"
app:showAsAction="never" />
</menu>
在代码中设置
toolbar.inflateMenu(R.menu.base_toolbar_menu);//设置右上角的填充菜单
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int menuItemId = item.getItemId();
if (menuItemId == R.id.action_search) {
//myresponse
} else if (menuItemId == R.id.action_notification) {
//myresponse
} else if (menuItemId == R.id.action_item1) {
//myresponse
} else if (menuItemId == R.id.action_item2) {
//response
}
return true;
}
});
到这里toolbar的基本使用就结束了。