欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

toolbar使用

程序员文章站 2024-03-24 12:50:40
...

Toolbar是Google在Android 5.0中推出的一款替代ActionBar的View。

ActionBar必须得作为Activity内容的一部分,而Toolbar可以放在任何层次。

Toolbar比ActionBar支持更多的功能

ToolBar的setTitle()方法不生效解决方法

使用ToolBar的setTitle()方法设置标题时,总是不生效,然后使用了Activity 的setTitle()方法。但是有点不甘心,ToolBar的setTitle()方法就不能用吗?百度了一下,有两种方法: 
1.在setSupportActionBar(titletoolbar);之前调用ToolBar的setTitle方法。 

private void initToolBar() {
        /**方法1*/
        toolbar2.setTitle("toolbar");
        /**>>>>>更改title的颜色不能直接写数字,不然没效果*/
//        toolbar2.setTitleTextColor(0xFF0000);
        toolbar2.setTitleTextColor(getResources().getColor(R.color.colorAccent));
        setSupportActionBar(toolbar2);
        ActionBar supportActionBar = getSupportActionBar();
        LogUtils.d("supportActionBar=" + supportActionBar);
        if (null != supportActionBar) {
//            getSupportActionBar().setTitle("我的标题");
        }
    }

2.在Activity的onResume周期中调用。

@Override
protected void onResume() {
    super.onResume();
    toolbar2.setTitle("toolbar");
}
以上两个方法亲测可用。 

使用ToolBar.setTitle()方法更改title的颜色更加灵活。

Toolbar让标题居中显示两种方法

1toolbar提供了titleMargin属性通过设置Marigin可以达到Title文本居中的效果

//设置标题居中,向右偏移159
toolbar2.setTitleMargin(159,0,0,0);

2Toolbar中间添加一个TextView (强烈推荐,方便实用

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    >
    <!--android:paddingTop="@dimen/status_bar_height"-->

    <TextView
        android:id="@+id/toolbar_title"
        style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textColor="@android:color/white"
        android:textStyle="bold"/>
</android.support.v7.widget.Toolbar>

(沉浸式状态栏)状态栏一体化后,ToolBar的部分布局被遮挡

toolbar使用

原因: //设置系统状态栏为透明,并且系统会取消状态栏原本所占的空间,普通布局会上移并占用状态栏所在位置的空间

        /**就是ToolBar会占用状态栏的位置空间上移动,*/

toolbar使用

解决方法1:设置xml 布局的根布局添加android:fitsSystemWindows="true" 属性

Android 沉浸式状态栏 SystemStatusManager源码:https://blog.csdn.net/d276031034/article/details/52079779

android fitsystemwindows简单使用:https://blog.csdn.net/u012885461/article/details/51068553

解决方法2:我们就需要ToolBar向下偏移状态栏的高度

1获取状态栏高度

/**
 * 获取当前设备状态栏高度
 * @return
 */
public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

2向下偏移状态栏的高度

private void setToolBarPadding() {
    int statusBarHeight = getStatusBarHeight();
    LogUtils.d("statusBarHeight="+statusBarHeight);
    toolbar.setPadding(0,statusBarHeight,0,0);
}

Android如何一步步实现状态栏一体化效果:https://blog.csdn.net/it_zjyang/article/details/53333718

...