toolbar使用
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会占用状态栏的位置空间上移动,*/
解决方法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
...
上一篇: 使用TabView创建底部导航栏的小案例
下一篇: Toolbar的简单使用