Style 样式
1、Style样式可以为View或者窗口指定统一的外观和格式。比如可以指定:宽高尺寸、字体颜色、字号、背景颜色等属性。
2、方式:style可以通过在xml资源文件中进行定义,然后在布局文件或者代码中进行引用。
3、定义样式:在res/values/目录中创建styles.xml文件,在该xml文件中实现style的定义。
<?xml version="1.0" encodeing="utf-8"?>
<resource>
<style name="CustomFont" 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">#0f0f0f</item>
</style>
</resource>
4、Style样式是可以继承的,通过style标签中的parent属性指定新定义的样式所继承的样式。parent继承的是系统的一些style样式。继承是可选的,可以选择继承,也可以选择不继承。
5、自定义的Style样式继承:可以通过”.“符号进行自定义的属性继承,在继承的基础上,进行属性的自定义修改。
<?xml version="1.0" encodeing="utf-8"?>
<resouce>
<style name="CodeFont.Red">
<item name="android:textColor">#FF0000</item>
</style>
</resouce>
6、设计style样式的目的:在复杂多样式的控件使用和项目应用中,保持统一的格式和展现效果,同时降低维护成本。
7、样式的使用:
- 单个控件使用样式:在布局文件中,使用控件的地方,添加style属性。
- 对Activity窗口或者应用使用样式:在AndroidMainfest.xml文件中为<activity>或者<application>元素添加android:theme属性。
1、View控件使用Style样式
在使用控件的xml布局文件中,引用样式名称。例如
<TextView
style="@style/CodeFont"
android:text="Hello Wrold"/>
2、对Activity或者应用使用Style
Activity或者整个应用使用Style时,成为之主题:Theme。
使用时需要在AndroidMainfest.xml文件中进行编辑,添加带有样式名称的android:theme属性。例如
2.1 application应用级别的主题
<application android:theme="@style/CustomTheme">
...
</application>
2.2 Activity级别的主题
对应用中的某一个Activity使用style主题,修改AndroidMainfest.xml文件中的<activity>标签中的android:theme属性即可。
<activity android:theme="@android:style/Theme.Dialog">
...
</activity>
3、Theme的变化和版本区别
3.1 普通的Theme主题
最常见的普通的Theme主题是:
@android:style/Theme.xxx
3.2 Materail Design主题 API:21
material:材料,原料,材质。Android 5.0系统开始,推广的一种新的设计风格,在android流行起Materail Design风格以后,android系统中的主题也提供了相应的支持:
@android:style/Theme.Material.xxx
3.3 v7包中的AppCompat主题
在5.0以后,android推出了appcompat-v7支持包,主要是有一些新控件,在该支持包中,有相应的主题支持:
@style/Theme.Appcompat.xxx
目前,所有的Activity均继承自AppCompatActivity,使用的主题也大多是AppCompat的主题。
4、Android界面的组成
4.1 状态栏 StatusBar
手机屏幕的最顶端显示信号,时间,wifi等信息,android系统当中称之为StatusBar。
4.2 标题栏 TitleBar
标题栏位于状态栏的下方,正常情况下标题栏的布局和主题样式都是使用系统定义好的。
4.3 操作栏 ActionBar
ActionBar又称之为操作栏,操作栏是Android 系统在3.0以后的SDK中引入的,操作栏的作用是取代标题栏,操作栏和标题栏一样紧挨在状态栏的下方。
注意:ActionBar是Android 3.0及以上的SDK才引入的,需要设置minSDKVersion = "11",即最小sdk需要大于11版本。另外,支持ActionBar的主题是Theme.Holo及其子主题,包含ActionBar。
4.4 工具栏 ToolBar
在2015年Google的IO开发者大会上,发布了关于Material Design风格的控件,其中ToolBar控件替代了ActionBar控件。ActionBar的碎片化问题比较严重,因此ToolBar替换了ActionBar。
ToolBar在显示上与ActionBar并没有什么区别,不同之处在于使用Toolbar可以修改状态栏的颜色。
4.5 导航栏 NavigationBar
Android系统界面中的底部导航栏,底部的虚拟按键。
5、系统提供的常用Style和主题
常见的一些系统提供的主题,举例如下:
- 背景透明:@android:style/Theme.Translucent
- Activity的Dialog主题:@android:style/Theme.Dialog
- 不显示标题栏:@android:style/Theme.NoTitleBar
- 背景白色:@android:style/Theme.Light
- Holo背景白色:@android:style/Theme.Holo.Light,适用于弹出的对话框的背景是黑色的,需要设置成该主题属性。
除此之外,还可以两个或者多个相互组合,比如:
- 无标题栏,并全屏:@android:style/Theme.NoTitleBar.Fullscreen
- 白色背景且无标题栏:@android:style/Theme.Light.NoTitleBar
- 透明背景且无标题栏:@android:style/Theme.Translucent.NoTitleBar
除此之外,还有很多,可以根据需要进行选取尝试和设置。
4、style中常见的item的属性
4.1 window的item属性
- android:windowNoTitle:是否有标题栏,可选值为true/false
- android:windowFullScreen:是否为全屏,可选值为true/false
- android:windowIsTranslucent:window是否为全屏,可选值为true/false
- android:windowBackground:window的背景颜色