toolbar 总结和踩过的坑 , 为toolbar设置字体

来源:互联网 发布:kingkong1024灯光编程 编辑:程序博客网 时间:2024/06/05 00:42
toolbar. setXXX();getMainActivity().setSupportActionBar(toolbar); 

会抹掉toolbar之前设置的navigation的点击事件 以及setnavigationicon, setoverflow等方法
要小心 这些方法 必须在前面写 ,最好只写一次
格式应该为toolbar. setXXX();

Toolbar一些比较常用的办法:

修改导航图标:

  toolbar.setNavigationIcon(资源文件);

修改menu图标:

 toolbar.setOverflowIcon(getResources().getDrawable(R.drawable.ic_toolbar_more));

设置导航事件

 toolbar.setNavigationOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                getActivity().onBackPressed();            }        });

设置菜单事件

toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {            @Override            public boolean onMenuItemClick(MenuItem menuItem) {            }

修改toolbar名字

    setSupportActionBar(toolbar);  (这个代码必须写在点击事件之前 )        getSupportActionBar().setTitle(null);        //noinspection ConstantConditions        toolbar.setTitle(com.music.gramophone.R.string.action_tag_editor);

为Toolbar设置字体 ,可以先获取Textview, 在对改textview设置字体或者其他特效

    public static TextView getToolbarTitleView(AppCompatActivity activity, Toolbar toolbar) {        ActionBar actionBar = activity.getSupportActionBar();        CharSequence actionbarTitle = null;        if (actionBar != null)            actionbarTitle = actionBar.getTitle();        actionbarTitle = TextUtils.isEmpty(actionbarTitle) ? toolbar.getTitle() : actionbarTitle;        if (TextUtils.isEmpty(actionbarTitle)) return null;        // can't find if title not set        for (int i = 0; i < toolbar.getChildCount(); i++) {            View v = toolbar.getChildAt(i);            if (v != null && v instanceof TextView) {                TextView t = (TextView) v;                CharSequence title = t.getText();                if (!TextUtils.isEmpty(title) && actionbarTitle.equals(title) && t.getId() == View.NO_ID) {                    //Toolbar does not assign id to views with layout params SYSTEM, hence getId() == View.NO_ID                    //in same manner subtitle TextView can be obtained.                    return t;                }            }        }        return null;    }

影响Toolbar外观和样式的几个因素

1  大小: 如果不可见 先设置高度为wrap_content2  自定义样式3  xml或者java代码4  系统样式 这个也是最隐秘最难发现的地方  以下样式会对toolbar本身起作用<!--<stylename="Base.Widget.AppCompat.Toolbar"parent="android:Widget"><itemname="titleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Title</item><itemname="subtitleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle</item><itemname="android:minHeight">?attr/actionBarSize</item><itemna<!--   <style name="Base.Widget.AppCompat.Toolbar" parent="android:Widget">        <item name="titleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Title</item>        <item name="subtitleTextAppearance">            @style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle        </item>        <item name="android:minHeight">?attr/actionBarSize</item>        <item name="titleMargin">40dp</item>        <item name="maxButtonHeight">56dp</item>        <item name="buttonGravity">top</item>        <item name="collapseIcon">?attr/homeAsUpIndicator</item>        <item name="collapseContentDescription">@string/abc_toolbar_collapse_description</item>        <item name="contentInsetStart">16dp</item>        <item name="contentInsetStartWithNavigation">72dp</item>        <item name="android:paddingLeft">0dp</item>        <item name="android:paddingRight">0dp</item>    </style>-->me="titleMargin">40dp</item><itemname="maxButtonHeight">56dp</item><itemname="buttonGravity">top</item><itemname="collapseIcon">?attr/homeAsUpIndicator</item><itemname="collapseContentDescription">@string/abc_toolbar_collapse_description</item><itemname="contentInsetStart">16dp</item><itemname="contentInsetStartWithNavigation">72dp</item><itemname="android:paddingLeft">0dp</item><itemname="android:paddingRight">0dp</item></style>-->会对系统的Toolbar 控件产生影响

在toolbar 的使用过程中发现如果其他控件挡住了他点击事件不会生效, 所以建议toolbar放在最顶层.(写在最下方) 因为toolbar一般都在最顶层. ,除了少数需要全屏后返回toolbar的特效
http://www.jianshu.com/p/6244687137d2