IT梦

Android 的style和theme

2017-05-17  本文已影响829人  minminaya

例子

<resources>
<style name="CodeFont" parent="@android:style/TextAppearance.Medium">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#00FF00</item>
<item name="android:typeface">monospace</item>
</style>
</resources>

<TextView
style="@style/CodeFont"
android:text="@string/hello" />

style作用

书写方式

<style name="CodeFont" parent="@android:style/TextAppearance.Medium">
...
</style>
<style name="CodeFont1" parent="CodeFont">
...
</style>

<style name="LightThemeSelector" parent="android:Theme.Holo.Light">
...
</style>
<style name="LightThemeSelector" parent="@android:style/Theme.Holo.Light">
...
</style>
<style name="LightThemeSelector" parent="@style/Theme.AppCompat">
...
</style>

style与theme的区别

Theme是针对窗体级别的,改变窗体样式;
Style是针对窗体元素级别的,改变指定控件或者Layout的样式

简单的说就是Theme里面有包含了好多好多Style

android:theme与app:popupTheme

常用于Toolbar下

比如

<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"/>  

android:theme="@style/AppTheme.AppBarOverlay设置了Toolbar的主题
app:popupTheme="@style/AppTheme.PopupOverlay"设置了Toolbar节点下的view的主题

默认情况下我们使用theme为android:Theme.Holo.Light.DarkActionBar那么ActionBar文字是白的,ActionBar Overflow弹出的是黑底白字,如果需求是白底黑字那么只要设置toolbar的app:popupTheme="ThemeOverlay.AppCompat.Light"


常用的自带Theme

android:theme=”@android:style/Theme.Dialog” : Activity显示为对话框模式
android:theme=”@android:style/Theme.NoTitleBar” : 不显示应用程序标题栏 
android:theme=”@android:style/Theme.NoTitleBar.Fullscreen” : 不显示应用程序标题栏,并全屏 
android:theme=”Theme.Light “: 背景为白色 
android:theme=”Theme.Light.NoTitleBar” : 白色背景并无标题栏 
android:theme=”Theme.Light.NoTitleBar.Fullscreen” : 白色背景,无标题栏,全屏 
android:theme=”Theme.Black” : 背景黑色 
android:theme=”Theme.Black.NoTitleBar” : 黑色背景并无标题栏 
android:theme=”Theme.Black.NoTitleBar.Fullscreen” : 黑色背景,无标题栏,全屏 
android:theme=”Theme.Wallpaper” : 用系统桌面为应用程序背景 
android:theme=”Theme.Wallpaper.NoTitleBar” : 用系统桌面为应用程序背景,且无标题栏 
android:theme=”Theme.Wallpaper.NoTitleBar.Fullscreen” : 用系统桌面为应用程序背景,无标题栏,全屏 
android:theme=”Theme.Translucent : 透明背景 
android:theme=”Theme.Translucent.NoTitleBar” : 透明背景并无标题 
android:theme=”Theme.Translucent.NoTitleBar.Fullscreen” : 透明背景并无标题,全屏 
android:theme=”Theme.Panel “: 面板风格显示 
android:theme=”Theme.Light.Panel” : 平板风格显示

常用的Theme的属性

名称 作用
android:windowIsTranslucent 设置透明属性(防止启动时候的闪屏)
android:windowBackground 设置背景图片
android:windowAnimationStyle Activity进入退出动画
android:windowNoTitle 不显示标题栏
android:textColor 默认字体颜色
android:windowFullscreen 是否全屏
android:windowIsFloating 是否浮现在activity之上
android:backgroundDimEnabled 背景是否模糊显示

常用的style元素属性

非官方

附上一张官方的

官方

装载自关于Android的style和theme

上一篇 下一篇

猜你喜欢

热点阅读