1,介绍
-
Toolbar是在Andoid 5.0 推出的一个Material Design 风格的标题控件
-
Google 非常推荐大家使用Toolbar作为Android 客户端的导航栏,来取代ActionBar
优点:
-
位置灵活:ActionBar 一定要固定在Activity的顶部,Toolbar 可以放在界面的任意位置
-
设置导航栏图标
-
设置App的Logo
-
支持设置标题栏和子标题栏
-
支持添加一个或多个自定义控件
-
支持ActionMenu
2,实现逻辑
【1】布局中使用,可以设置不同的位置,可以当一个布局使用
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context="com.itheima.a006_toolbar.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:background="@color/colorPrimaryDark"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:text="我"
android:layout_width="10dp"
android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>
</RelativeLayout>
-
设置没有Actionbar的主题
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
【2】添加背景,子标题, 标题,添加控件
//找到控件
Toolbar toolbar= (Toolbar) findViewById(R.id.toolbar);
//设置标题
toolbar.setTitle("我是标题");
设置字体颜色
toolbar.setTitleTextColor(Color.RED);
//设置图标的Logo
toolbar.setLogo(R.mipmap.ic_launcher);
//设置子标题
toolbar.setSubtitle("我是子标题");
//设置子标题的颜色
toolbar.setSubtitleTextColor(Color.GREEN);
//设置图片
toolbar.setNavigationIcon(R.mipmap.navi);
【3】创建Menu视图
-
res 创建menu 文件
-
创建menu文件 toolbar_menu_items
-
<!--always优先显示-->
-
<!--withText显示文件 根据标题栏的宽度-->
-
<!--never只显示在隐藏菜单-->
-
<!--ifRoom 看标题栏的剩余空间-->
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu1"
app:showAsAction="always|withText"
android:icon="@android:drawable/ic_delete"
android:title="删除" />
<item
android:id="@+id/menu2"
app:showAsAction="never"
android:icon="@android:drawable/ic_menu_add"
android:title="添加" />
</menu>
-
添加到menu菜单上
toolbar.inflateMenu(R.menu.toolbar_menu_items);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int itemId = item.getItemId();
switch (itemId)
{
case R.id.menu1:
Toast.makeText(ToolbarMainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.menu2:
Toast.makeText(ToolbarMainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
break;
}
return true;
}
});