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

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_content
2  自定义样式
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

猜你喜欢

转载自blog.csdn.net/qq_36331942/article/details/77536841
今日推荐