Android总结之style(样式)和Theme(主题)

您所在的位置:网站首页 主题背景什么意思 Android总结之style(样式)和Theme(主题)

Android总结之style(样式)和Theme(主题)

2024-07-12 07:52| 来源: 网络整理| 查看: 265

Android系统的themes.xml和style.xml(位于系统源代码frameworks\base\core\res\res\values)包含了很多系统定义好的style.传送门–> android上的风格分为了两个方面:

style(样式)

style(样式)是针对窗体元素级别的,改变指定控件或者Layout的样式。 抽取一些共同的属性写到style,可以省略大量重复的属性代码。

创建步骤:

在res/values目录下新建一个名叫style.xml的文件。增加一个 根节点。 在根节点中新建< style>元素,并设置一个唯一的name,也可以选择增加一个父类属性(parent)。通过name来引用,而父类属性标识了当前风格是继承于哪个风格。 (可以引用另一个style,但在一般情况下,会继承Android的标准风格资源并加以修改)在元素内部,可以申明一个或者多个,每一个定义了一个名字属性,并且在元素内部定义了这个风格的值。你可以在其他XML定义的资源中通过style=”@style/YourCustomStyle”引用。 //如果style中定义的属性和View中定义的重复,View中的属性会覆盖style中定义的属性。 --设置name 和parent--> #000 20sp --字体大小--> wrap_content --控件高度-> match_parent --控件宽度--> #8f00 center_horizontal --view中内容的位置限定--> 1 --比重--> //此处没有设置Parent属性,但由于name以MyStyle.开头,所以MyStyle.red会完全继承MyStyle #000 20sp --字体大小--> wrap_content --控件高度--> match_parent --控件宽度--> #8f00 center_horizontal --view中内容的位置限定--> 1 --比重--> //同上,MyStyle.red.big会完全继承MyStyle.red #000 20sp --字体大小--> wrap_content --控件高度--> match_parent --控件宽度--> #8f00 center_horizontal --view中内容的位置限定--> 1 --比重--> 注意:这种通过将名称链接起来的继承方法只适用于由您自己的资源定义的样式。 您无法通过这种方法继承 Android 内建样式。 要引用内建样式(例如TextAppearance),您必须使用 parent 属性。 Theme(主题)

Theme(主题)是针对窗体级别的,改变窗体样式,对整个应用或某个Activity存在全局性影响。 主题依然在元素里边申明,也是以同样的方式引用。不同的是Theme可以在Android Manifest中定义的和中通过设置属性 android:theme=”@style/**“添加到整个程序或者某个Activity。 注:主题是不能应用在某一个单独的View里。

true @drawable/screen_frame @drawable/screen_background_white #FF000000 #FFFFFFFF ?panelForegroundColor 14 ?panelTextColor ?panelTextSize 我们用了@符号和?符号来应用资源。 @符号 表明了我们应用的资源是已经定义过并存在的,可以直接引用。(和布局文件引用相同) ?符号 表明了我们引用的资源的值在当前的主题当中定义过。通过引用在里边定义的名字可以做到 (panelTextColor用的颜色和panelForegroundColor中定义的一样)。

如果想设置某个主题,但又想做少量调整以满足需求,只需将该主题添加为当前主题的parent即可。例如:

// 在Theme.AppCompat.Dialog主题的基础上加以修改 @null --取消默认Dialog的windowFrame框--> true --设置无标题Dialog--> true --是否四周变暗--> true -- 是否悬浮在activity上 --> @null --取消默认ContentOverlay背景 --> @android:color/transparent --取消window默认背景 不然四角会有黑影-->

注:如果一个应用使用了theme,同时应用下的view也使用了style,那么当theme与样式style发生冲突时,style的优先级高于主题。

系统自带的常用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=”Translucent” 半透明 android:theme=”Theme.Translucent.NoTitleBar” 半透明,无标题,全屏android:theme=”Theme.Translucent.NoTitleBar.Fullscreen” 半透明,无标题,全屏android:theme=”Theme.Panel” 半透明,无标题,全屏android:theme=”Theme.Light.Panel”平板风格显示


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3