ToolBar

什么是ToolBar:
Android在3.0以后退出了一个控件ActionBar,而到了2013年,Google开始大力的推动所谓的Android Style,
想要改善过去Android纷乱的界面,希望使用者尽可能在Android手机上有着独特的操作体验.ActionBar过去使用最多的就是ActionBarSherlock和support v7包下的Appcompat.
(新的版本都添加了新的元素,控件,内容,在低一版本的Android系统,就没有这些东西,如果没有V兼容包,那么你用新版本Android写的东西,在低一版本运行,就找不到一些方法,从而导致程序崩溃.
为了解决这个问题,开发了V兼容包)

Android5.0以下的设备,目前colorPrimaryDark无法去个性化状态栏的颜色
ActionBar:在使用时有一堆问题,文字不能定制,位置不能改变,图标间距无法控制.
升级版:ToolBar, 是Google官方提供,以便满足开发者个性化定制状态栏需求. 并且提供了support library 向下兼容包
特点:ToolBar实际是一个容器ViewGroup,一个容器,我们可以直接往里面塞东西,简单粗暴.

使用ToolBar的基本步骤
1.隐藏原本的ActionBar,通过修改我们的基础主题为:@style/Theme.AppCompat.Light.NoActionBar
(改主题在清单文件里进行修改.你可以改变某个Activity的主题,也可以直接改变应用的主题,应用主题改变为application)
打开Values文件夹中的Style,将里面的parent做出更改

<!-- 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直接当容器使用-->
<android.support.v7.widget.Toolbar
    android:id="@+id/toolBar"
    android:background="#41f4eb"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:text="はつね!"
        android:textSize="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</android.support.v7.widget.Toolbar>

3.代码中初始化ToolBar
4.ToolBar做个性化设置

Toolbar toolbar = (Toolbar) findViewById(R.id. toolBar);
        // 设置 ToolBar 的主标题 , 必须要在 setSupportActionBar 代码执行顺序的前面
        toolbar.setTitle( " 主标题 ");
        // 必须有的一步操作 , 参数就是 ToolBar 对象
        setSupportActionBar(toolbar);
        // 设置导航栏图标
//        toolbar.setNavigationIcon(R.drawable.a4);
        // 设置 App Logo
        toolbar.setLogo(R.drawable. a4);
        // 设置子标题 , 会出现在主标题的正下方
        toolbar.setSubtitle("子标题");

5.设置ToolBar的菜单点击事件,Res文件下创建Menu文件

<? 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">
    <!-- 注意 :xmlns:app=.../res-auto  是要修改的地方 , 下面要引用 app-->
    <!--    app:showAsAction=  item 是否隐藏折叠的设置 , 隐藏折叠显示文本 , 否则显示图片
            always 就是一直显示 ,never 就是隐藏折叠 -->

    < item  android :id= "@+id/item0"
          app :showAsAction= "never"
          android :icon= "@drawable/a4"
          android :title= "item0"
        />
    < item  android :id= "@+id/item1"
          app :showAsAction= "never"
          android :icon= "@drawable/a4"
          android :title= "item1"
        />
    < item  android :id= "@+id/item2"
          app :showAsAction= "never"
          android :icon= "@drawable/a4"
          android :title= "item2"
        />

</menu>

6.重写OnCreateOptionsMenu方法

// toolBar 填充菜单布局 , 起效果必须复写 onCreateOptionsMenu 方法
toolbar.inflateMenu(R.menu. toolbar_menu);
// 设置右上角的菜单点击事件的监听
toolbar.setOnMenuItemClickListener( new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        Toast. makeText(MainActivity. this, "hatsune39", Toast. LENGTH_SHORT).show();
        return true;
    }
});

// 使用 getMenuInflater() 填充 Menu 布局 , 第二个参数固定式 menu, 更改返回值为 True, 才有效果
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu. toolbar_menu,menu);
    return true;
}

效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值