android:theme和app:popupTheme的作用,以及在android 3.0以下不起作用问题的解决
2016-07-01 13:35
417 查看
在android5.0中,新增了Material Design设计语言,确实挺炫的,使用Toolbar代替了之前的Actionbar确实灵活很多。
之前我们只能在application或者activity中使用theme主题,但是在Android 5.0中可以给View使用theme主题,这个View及其子View都会使用这个theme,给了我们设计一个很大的灵活性。
给View添加theme的方法为:
android:theme="你的theme"
例如:
[java] view
plain copy
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/AppTheme.AppBarOverlay"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
上面的代码片段我们就给这个toolbar添加了一个theme,细心的或许看到最后一个属性app:popupTheme,这个属性就是用来自定义我们弹出的菜单的样式,在之前的Actionbar的溢出菜单,我们是不能自定义他的样式的,只能根据你的theme来选择黑白两种,不能自己定义,现在我们可以定义弹出菜单的样式。比如我们的需求:
ActionBar文字是白的,ActionBar Overflow弹出的是白底黑字
默认的情况下我们使用theme为android:Theme.Holo.Light.DarkActionBar那么ActionBar文字是白的,ActionBar Overflow弹出的是黑底白字,但是我们要的是上面的需求白底黑字怎么办呢,这在android5.0以前是没法做到的,现在可以用app:popupTheme这个属性就可以实现,比如我可以将toolbar的app:popupTheme="ThemeOverlay.AppCompat.Light",那么这个Overflow弹出的是白底黑字。
最后一个问题使用android:theme这个属性,在android3.0以上可以应用到View及其子View的,但是在android3.0以下只能应用到当前的View,是不能使子View起作用的,所有要用到该theme的View都要加上,这个切记,当然了android3.0以下的遗留机器已经很少了,如果你不用适配这个版本,你完全可以忽略这个。
之前我们只能在application或者activity中使用theme主题,但是在Android 5.0中可以给View使用theme主题,这个View及其子View都会使用这个theme,给了我们设计一个很大的灵活性。
给View添加theme的方法为:
android:theme="你的theme"
例如:
[java] view
plain copy
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/AppTheme.AppBarOverlay"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
上面的代码片段我们就给这个toolbar添加了一个theme,细心的或许看到最后一个属性app:popupTheme,这个属性就是用来自定义我们弹出的菜单的样式,在之前的Actionbar的溢出菜单,我们是不能自定义他的样式的,只能根据你的theme来选择黑白两种,不能自己定义,现在我们可以定义弹出菜单的样式。比如我们的需求:
ActionBar文字是白的,ActionBar Overflow弹出的是白底黑字
默认的情况下我们使用theme为android:Theme.Holo.Light.DarkActionBar那么ActionBar文字是白的,ActionBar Overflow弹出的是黑底白字,但是我们要的是上面的需求白底黑字怎么办呢,这在android5.0以前是没法做到的,现在可以用app:popupTheme这个属性就可以实现,比如我可以将toolbar的app:popupTheme="ThemeOverlay.AppCompat.Light",那么这个Overflow弹出的是白底黑字。
最后一个问题使用android:theme这个属性,在android3.0以上可以应用到View及其子View的,但是在android3.0以下只能应用到当前的View,是不能使子View起作用的,所有要用到该theme的View都要加上,这个切记,当然了android3.0以下的遗留机器已经很少了,如果你不用适配这个版本,你完全可以忽略这个。
相关文章推荐
- 论坛20大经典变态楼主主题和回复,暴强!
- 自定义一个theme在不同的sdk环境下继承不同的值
- NopCommerce架构分析之(七)主题Theme皮肤管理器
- jQuery UI 应用不同Theme的办法
- 基于android样式与主题(style&theme)的详解
- Android系统自带样式 (android:theme)
- jQuery无刷新切换主题皮肤实例讲解
- 详解WordPress开发中get_header()获取头部函数的用法
- 在WordPress中获取数据库字段内容和添加主题设置菜单
- Android入门之Style与Theme用法实例解析
- WordPress主题制作中自定义头部的相关PHP函数解析
- 扮靓你的notepad++之——主题配置
- Win10怎么更换主题?win10设置主题图文教程
- NopCommerce架构分析之(七)主题Theme皮肤管理器
- Win10预览版14316彩色主题下把标题栏改成白色的方法
- win7系统打开自带壁纸和主题的方法 win7系统自带壁纸和主题如何使用
- 在Win7操作系统中怎么使用主题?
- [WP主题]主机主题分享——HostMe
- 博客园怎样查看别人使用的模板主题
- 聊聊Android Theme的那些事