Android:主题(Theme)

1.主题和样式的区别主要区别在 

  • 主题不能作用于单个View组建,主题应该对整个应用中的所有Activity起作用或者对指定的Activity起作用 

  • 主题定义的格式应该是改变窗口的外观格式,例如窗口变体,窗口边框等 

 

2.自定义主题 

  • 在/res/values/my_style.xml文件增加一个主题,定义主题<style.../>片段如下 

 

<style name="CrazyTheme" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullScreen">true</item> 
    <item name="android:windowFrame">@drawable/window_border</item> 
    <item name="android:windowBackground>@drawable/star</item> 
</style> 

可以通过parent属性,继承原有的主题 

 

  • 在定义上面的主题后,接下来在Java代码中使用该主图 

 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setTheme(android.R.style.CrazyitTheme); 
    setContentView(R.layout.linear_layout_3); 
} 

还可以在AndroidManifest.xml中对指定应用、指定Activity应用主题,这样更简单 

 

<application android:theme="@style/CrazyitTheme"> 
    ... ... 
</application> 
<activity android:theme="@android:style/Theme.Dialog"> 
</activity>
 

3.Android系统包含了很多系统定义好的theme。总结如下 

主题 

说明 

图例 

Theme.NoTitleBar 

不显示应用程序标题栏 

Android:主题(Theme)

 

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.Dialog 

对话框形式显示 

Android:主题(Theme)

 

Theme.Panel 

面板风格显示 

Android:主题(Theme)

 

Theme.Light.Panel 

平板风格显示 

Android:主题(Theme)