Toolbar使用

Toolbar使用,第1张

Toolbar是Android 5.0中引入的一个新控件。好比是ActionBar升级版,但是相比ActionBar,Toolbar变得更加自由,可以放到任何位置。

由于我们平常开发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让状态栏下移,当然,为了让状态栏颜色跟标题栏一样,你还需要给根视图设置一样的背景色(因为状态栏实际是透明的)。

运行看看,已经实现了我们的要求。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11405192.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存