Toolbar设置详解----掉坑总结

本文详细介绍了Android中Toolbar的使用,包括NavigationIcon、Title、Menu菜单的配置及常见问题。强调了setSupportActionBar()的重要性,指出了style配置的坑点,如theme、popupTheme的影响,并提供了修改字体颜色、菜单显示位置的解决方案。同时,文章更新部分讨论了Fragment中使用Menu的正确方法,指出在ViewPager+多Fragment场景下的注意事项。
摘要由CSDN通过智能技术生成

前言:

因为需要封装toolbar,所以彻底的研究了下toolbar,
以前只是简单用用,现在发现完全用起来很多坑,总结一下.

先来张效果图:

QQ图片20170226164432.png

Toolbar的结构其实很简单:

1.NavigationIcon
2.Logo
3.Title
4.subTitle
5.menu.
常用的:1,3,5
#####友情提示:
getSupportActionBar()一定要在setSupportActionBar(Toolbar toolbar)之后调用

先说常用的:

1.NavigationIcon的几个方法

//设置是否添加显示NavigationIcon.如果要用
void setDisplayHomeAsUpEnabled(boolean showHomeAsUp);
//设置NavigationIcon的icon.可以是Drawable ,也可以是ResId
void setNavigationIcon(@Nullable Drawable icon);
void setNavigationIcon(@DrawableRes int resId) 
//设置NavigationIcon的点击监听.
void setNavigationOnClickListener(OnClickListener listener);
具体使用:
Toolbar mToolbar =  (Toolbar)findViewById(R.id.toolbar)
//设置Toolbar
 setSupportActionBar(mToolbar);
//显示NavigationIcon,这个方法是ActionBar的方法.Toolbar没有这个方法.
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//设置icon
mToolbar.setNavigationIcon(drawable);
//设置监听.必须在setSupportActionBar()之后调用
mToolbar.setNavigationOnClickListener(clickListener);
总结几个坑:

1.必须先 setSupportActionBar(mToolbar).

2.setDisplayHomeAsUpEnabled(true)是ActionBar的方法.

3.setNavigationOnClickListener()必须要在setSupportActionBar()之后调用才能生效.因为setSupportActionBar(Toolbar),会将Toolbar转换成Acitionbar.点击监听也会重新设置.

2.Title

几个方法:
//是否显示
getSupportActionBar().setDisplayShowTitleEnabled(boolean showTitle);
//设置title.
getSupportActionBar().setTitle(title);
//设置title.
Toolbar.setTitle(title);
//设置Margin边距.
Toolbar.setTitleMargin();
//设置字体.
Toolbar.setTitleTextAppearance();
//设置字的颜色
Toolbar.setTitleTextColor(int color);
总结:

使用比较简单.基本看方法名就知道是干嘛的了.也没什么坑.
Toolbar直接设置title或者getSupportActionBar()再设置title都可以.

3 Menu菜单

这玩意用起来有点蛋疼.坑挺多的.

先说创建:

  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //写一个menu的资源文件.然后创建就行了.
        getMenuInflater().inflate(R.menu.menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      tools:context="com.example.acctionbaractivitydemo.MainActivity">
    <item
        android:id="@+id/menu1"
        //图标
        android:icon="@mipmap/ic_launcher"
        //名字
        android:title=""
        app:showAsAction="withText|ifRoom"/>
    <item
        android:id="@+id/menu2"
        android:icon="@mipmap/ic_launcher"
        android:title="哈哈"
        app:showAsAction="withText"/>
    <item
        android:id="@+id/menu3"
        android:icon="@mipmap/ic_launcher"
        android:title="呵呵"
        app:showAsAction="withTe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值