ToolBar的使用

ToolBar详解

ToolBar是android5.0推出的一个导航控件,可以取代之前的ActionBar功能。这个控件提供的功能有:设置导航栏图标、设置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/colortoolbar"
      >
      <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Clock"/>
  </android.support.v7.widget.Toolbar>

如果想设置其他属性,可以通过自定义的命名空间的方式来设置,在根布局上加上下面一句话

 xmlns:toolbar="http://schemas.android.com/apk/res-auto"

然后就可以直接设置NavigationIcon,Logo,Title,SubTitle等属性

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/color_0176da"
        toolbar:navigationIcon="@mipmap/ic_drawer_home"
        toolbar:logo="@mipmap/ic_launcher"
        toolbar:subtitle="456"
        toolbar:title="123">

        <!--自定义控件-->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Clock" />
    </android.support.v7.widget.Toolbar>

代码控制

如果在布局文件中已经设置来NavigationIcon,logo,title等属性,在java代码文件中无需进行设置了,如果没有设置,可以参考下面的方式设置

setContentView(R.layout.activity_main);
setSupportActionBar(mToolBar);
//获取控件
mToolBar= (Toolbar) findViewById(R.id.toolbar);
//设置导航图标
mToolBar.setNavigationIcon(R.mipmap.ic_launcher);
//设置应用程序图标
mToolBar.setLogo(R.mipmap.ic_launcher);
//设置大标题
mToolBar.setTitle("Title");
//设置小标题
mToolBar.setSubtitle("Subtitle");
//设置菜单
 mToolBar.inflateMenu(R.menu.base_toolbar_menu);
mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
              Toast.makeText(MainActivity.this,"NavigationListener",Toast.LENGTH_SHORT).show();
            }
        });
    //设置菜单监听
    mToolBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener(){

     @Override
      public boolean onMenuItemClick(MenuItem item) {

         int menuItemId=item.getItemId();
         if(menuItemId==R.id.action_search){
                    Toast.makeText(MainActivity.this,"search",Toast.LENGTH_SHORT).show();
         }else if(menuItemId==R.id.action_notification){
                    Toast.makeText(MainActivity.this,"notification",Toast.LENGTH_SHORT).show();
         }else if(menuItemId==R.id.action_item1){
                    Toast.makeText(MainActivity.this,"item",Toast.LENGTH_SHORT).show();
         }

           return true;
          }
        });

需要注意几个地方
1.在使用ToolBar的时候需要先隐藏系统原先的导航栏
继承AppCompatActivity的类调用:
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
继承Activity的类调用:
requestWindowFeature(Window.FEATURE.NO_TITLE);
2.如果想要修改子标题和标题的大小、颜色可以调用
setTitleTextColor setTitleTextAppearance setSubtitleColor setSubtitleTextAppearance inflateMenu来设置菜单,调用setOnMenuItemOnclickListener来监听按键
3.自定义的View位于title/subtitle和actionMenu之间,所以如果title和subtitle都在,且actionMenu选项很多,那么留给自定义view的空间就更小了
当然,对于title,subtitle,navigationIcon等属性的代码方式设置,也可以通过配置文件的方式设置,前提是加入自定义的命名空间
xmlns:toolbar=”http://schemas.android.com/apk/res-auto
这里toolbar就是自定义的名称,那么对于以上的subtitle,title等属性的设置如下
toolbar:title=”@string/title”
toolbar:subtitle=”@string/subtitle”
ActionMenu样式控制
在styles.xml文件中新建一个主题,如下

<style name="Theme.ToolBar.Base" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:textColorPrimary">@color/red</item>
        <item name="android:textSize">26sp</item>
    </style

然后设置Toolbar的属性popupTheme的属性

  app:popupTheme="@style/Theme.ToolBar.Base"

这样就可以修改actionMenu里面的字体大小和颜色了

当然还有其他属性,如下

  • colorPrimaryDark

    状态栏背景色,在 style 的属性中设置。

  • colorPrimaryDark

    状态栏背景色,在 style 的属性中设置。

  • textColorPrimary
    Actionbar 的背景色设定在 style 中的 colorPrimary, Toolbar 的背景色在layout文件中设置background属性。

  • colorAccent
    各控制元件(如:check box、switch 或是 radoi) 被勾选 (checked) 或是选定 (selected) 的颜色。在 style 的属性中设置
  • colorControlNormal
    各控制元件的预设颜色,在 style 的属性中设置

  • windowBackground
    App 的背景色,在 style 的属性中设

  • navigationBarColor
    导航栏的背景色,但只能用在 API Level 21 (Android 5) 以上的版本,在 style 的属性中设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值