
由于我们平常开发app要兼容5.0以下的手机,所以使用Toolbar必须引用appcompat-v7兼容包,Android studio新建的工程默认是引用了appcompat-v7。
使用Toolbar替代ActionBar,使用的主题必须是没有ActionBar的,否则会造成冲突。因此修改style.xml中主题样式,继承Theme.AppCompat.NoActionBar
这种情况一般发生在你想利用ActionBar现有的一些功能(比如能够显示菜单中的 *** 作项,响应菜单点击事件,使用ActionBarDrawerToggle等),但是又想获得比actionbar更多的控制权限。
那么当前Activity需要继承AppCompatActivity,调用setSupportActionBar方法传入Toolbar的实例对象。
这种情况当前Activity可以不继承AppCompatActivity。
以上步骤完成后,Toolbar就添加到了页面中。
Toolbar在ActionBar原有的设计基础上又将标题栏分为了多个区域,如下从Google找到的一张示例图所示:
大抵来说,配置常用的几个元素就如图中所示:
设置导航按钮,比如作为返回按钮。
在Toolbar当作ActionBar来使用的情况下:
注意setNavigationIcon需要放在 setSupportActionBar之后才会生效。
可以使用ActionBar原有方法来添加一个系统的返回按钮。
可以通过setNavigationOnClickListener设置其点击事件。
设置图标(图中写错了,应该是setLogo)
设置主标题。
在Toolbar当作ActionBar来使用的情况下:
setDisplayShowTitleEnabled需要设置为false,setTitle才能有效。
设置副标题
设置菜单的点击事件,如果Toolbar当作ActionBar来使用的话,还可以直接在onOptionsItemSelected(MenuItem item)中设置。
关于Toolbar的初步使用就这么多,在Toolbar当作ActionBar使用的情况下,能用ActionBar原有方法实现的功能尽量用其方法实现,不能实现的再考虑使用Toolbar的方法,举个例子,像菜单构建设置监听什么的,直接使用Activity提供的方法就好了。
早就已经抛弃Android中的ActionBar已经很久了,现在在v7中的Toolbar已经爬坑很久了。对于它的样式,也是用到的时候才会去查一下,但是有时候百度查的时候也是很麻烦,需要很久,索性就把常用到的样式给记录下来,以备不时之需,到时可直接复制粘贴大法到自己的项目中去了。废话不多说了,GETING START!!!
设置toolbar的主题: android:theme="@style/......."
上边两种样式是黑白标题的两种样式默认的显示情况。
有时候标题栏的颜色并不符合我们的要求,我们就修改下标题栏的颜色
在白色样式上进行修改,标题文字,navigation icon,overflow button,overflow menu的文字
<item name="subtitleTextColor">#09bb07</item>这行主要是修改副标题的字体颜色
可以看到,除了overflow menu 的背景颜色没有改变 其他的字体颜色都会改变
添加OverflowMenu样式为 app:popupTheme="@style/......."
Toolbar两种不同的主题,对应的OverflowMenu样式也不同。白色的对应是黑色背景、白色字体;黑色对应的是白色背景,黑色字体。
注意:添加上OverflowMenu的样式后,之前修改标题栏字体颜色对菜单的字体颜色就不起作用了,需要重新在OverflowMenu的样式上定义字体颜色了
沉浸式状态栏是一种比较常见的UI风格,接下来就去看看怎么实现它。
在styles.xml里增加TranslucentTheme,我们这里minSdkVersion 是以21为准,低于安卓5.0以下的手机很少了,就不适配了。
对于这种没有标题栏,图片沉浸到状态栏的效果,我们已经实现了。如果是有标题栏呢?比如加个Toolbar会变成下面这样:
对于有标题的页面,我们希望状态栏颜色跟标题栏一样就行了,不希望标题栏上移跟状态栏重叠,我们可以在布局文件根视图设置如下属性,这个相当于设置了个padding让状态栏下移,当然,为了让状态栏颜色跟标题栏一样,你还需要给根视图设置一样的背景色(因为状态栏实际是透明的)。
运行看看,已经实现了我们的要求。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)