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.xxx3.2 Materail Design主题 API:21
material:材料,原料,材质。Android 5.0系统开始,推广的一种新的设计风格,在android流行起Materail Design风格以后,android系统中的主题也提供了相应的支持:
@android:style/Theme.Material.xxx3.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.TranslucentActivity的Dialog主题:@android:style/Theme.Dialog不显示标题栏:@android:style/Theme.NoTitleBar背景白色:@android:style/Theme.LightHolo背景白色:@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/falseandroid:windowFullScreen:是否为全屏,可选值为true/falseandroid:windowIsTranslucent:window是否为全屏,可选值为true/falseandroid:windowBackground:window的背景颜色