Android 风格和主题
Android xml风格和主题文件的编写,是涉及到整个程序界面美观的因素之一。 <wbr><wbr>当设计应用程序时,你可以用风格和主题来统一格式化各种屏幕和UI元素。较好的应用风格和主题,可以实现美观而统一的界面,和web中的CSS一样,Android也可以为界面定义全局、公用的Style。</wbr></wbr>
<wbr><wbr></wbr></wbr>
Styles和Themes都是资源文件位于res/values,当然,可以用Android提供的一些默认的风格和主题资源,也可以自定义自己的主题和风格资源。
<wbr><wbr></wbr></wbr>
Styles:
风格是一个包含一种或者多种格式化属性的集合,可以将其作为一个单位用在布局XML单个元素当中。 <wbr><wbr>比如,可以定义一种风格来定义文本的文字大小和颜色,然后将其应用于视图
<wbr><wbr>元素的一个特定实例。</wbr></wbr></wbr></wbr>
<wbr><wbr></wbr></wbr>
Theme:
主题是一个包含一种或者多种格式化属性的集合,可以将其作为一个单位用在应用程序所有的活动当中或者某个活动当中。比如,可以定义一个主题,它为window frame和panel 的前景和背景设置了特定的颜色,
<wbr><wbr>并为菜单定义文字的大小和颜色属性,然后将这个Theme应用到应用程序的Activity中。</wbr></wbr>
<wbr><wbr></wbr></wbr>
Style和Theme的XML文件结构:
对每一个Styles和Themes,有一个<resources>根节点,给<style>元素增加一个全局唯一
<wbr><wbr>的名字,也可以选择增加一 <wbr><wbr>个父类属性。在后边我们可以用这个名字来应用风格,而 <wbr><wbr>父类属性标识了当前风格是继承
<wbr><wbr>于哪个风格。在<style>元素内部,申明一个或者多个<span style="color:#ff0000"><strong><item></strong></span>,每一个<item>定义了一个名字属性,并且在元素内部定义了这个风格的值。<br><wbr><wbr><br>
新建自定义的风格和主题 :<br>
1. <wbr><wbr>在res/values 目录下新建一个名叫<span style="color:#ff0000"><strong>style.xml</strong></span>的文件。<br>
2. <wbr><wbr>对每一个风格和主题,给<style>元素增加一个全局唯一的名字,和一个可选的父类属性。在后边我们可以名字来应用风格,而父类属性标识了当前风格是继承于哪个风格。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
3. <wbr><wbr>在<style>元素内部,申明一个或者多个<item>,每一个<item>定义了一个名字属性,并且在元素内部定义了这个风格的值。</wbr></wbr>
4. <wbr><wbr>然后可以在其他XML资源,manifest或应用程序代码中引用这些自定义资源。</wbr></wbr>
<wbr><wbr></wbr></wbr>
风格Styles(SDK提供的Style的例子) :
<wbr><wbr><strong><?xml version="1.0" encoding="utf-8"?><br><wbr><wbr><resources><br><wbr><wbr><wbr><wbr><style name="SpecialText" parent="@style/Text"><br><wbr><wbr><wbr><wbr><wbr><wbr><item name="android:textSize">18sp</item><br><wbr><wbr><wbr><wbr><wbr><wbr><item name="android:textColor">#008</item><br><wbr><wbr><wbr><wbr></style><br><wbr><wbr></resources><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></strong>如上所示,你可以用<item>元素来为你的风格定义一组格式化的值。在Item当中的name属性可以 <wbr><wbr>是一个字符串,一个16进制数所表示的颜色或者任何其他资源的引用。<br><wbr><wbr><br><span style="color:#ed1c24"><strong>注意:</strong></span>在<style>元素中的父类属性。这个属性让你可以能够定义一个资源,当前风格可以从这个资源当中继承到值。你可以从任何包含这个资源当中继承此风格。通常上,你的资源应该一直直接或者间接地继承Android的标准风格资源。这样的话,你就只需要定义你想改变的值。<br><wbr><wbr><br>
在这个例子当中的EditText元素,演示了如何引用一个XML布局文件当中定义的风格:<br><wbr><wbr><EditText id="@+id/text1"<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><strong><span style="color:#ff0000">style="@style/SpecialText"<br></span></strong><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>android:layout_width="fill_parent"<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>android:layout_height="wrap_content"<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>android:text="Hello, World!" /></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
现在这个EditText部件所表现出来的风格将是我们在上边的XML文件中所定义的那样。
<wbr><wbr></wbr></wbr>
另:转载一个自定义实例
1.在res/values 目录下新建一个名叫style.xml的文件。
2.在style.xml定义内容如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<wbr><wbr><span style="color:#ff0000"><strong><style name=”DavidStyleText1″><br></strong></span><wbr><wbr><wbr><wbr><wbr><wbr><item name=”android:textSize”>18sp</item><br><wbr><wbr><wbr><wbr><wbr><wbr><item name=”android:textColor”>#EC9237</item><br><wbr><wbr><strong><span style="color:#ff0000"></style><br></span></strong><wbr><wbr><strong><span style="color:#ff7e00"><style name=”DavidStyleText2″><br></span></strong><wbr><wbr><wbr><wbr><wbr><wbr><item name=”android:textSize”>14sp</item><br><wbr><wbr><wbr><wbr><wbr><wbr><item name=”android:textColor”>#FF7F7C</item><br><wbr><wbr><wbr><wbr><wbr><wbr><item name=”android:fromAlpha”>0.0</item><br><wbr><wbr><wbr><wbr><wbr><wbr><item name=”android:toAlpha”>0.0</item><br><wbr><wbr><span style="color:#ff7e00"><strong></style><br></strong></span></resources><br>
上面样式的定义,从字面意思就可以了解其功能了,下面看看如何应用它吧:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<!– 应用样式1的TextView –>
<TextView
<wbr><wbr><strong><span style="color:#ed1c24">style="@style/DavidStyleText1"</span></strong><br><wbr><wbr>android:layout_width=”fill_parent”<br><wbr><wbr>android:layout_height=”wrap_content”<br><wbr><wbr>android:gravity=”center_vertical|center_horizontal”<br><wbr><wbr>android:text=”moandroid”/></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<!– 应用样式2的TextView –>
<TextView
<wbr><wbr><strong><span style="color:#ed1c24">style="@style/DavidStyleText2″<br></span></strong><wbr><wbr>android:layout_width=”fill_parent”<br><wbr><wbr>android:layout_height=”wrap_content”<br><wbr><wbr>android:gravity=”center_vertical|center_horizontal”<br><wbr><wbr>android:text=”www.moandroid.com”<br><wbr><wbr>android:autoLink=”all”/></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
现在这个EditText组件的所表现出来的风格就为我们在上边的XML文件中所定义的那样,如下:
看了新的界面是不是感觉漂亮多了,这也就是Styles的魅力吧。需要补充说明的是:单击超链接,还可以打开网页如下:
这是如何实现的了?TextView.setTextView不支持HTML TAG的输出,所以即便写成这样:
mTextView01.setText(”<a href=\”http://www.moandroid.com/\”>mo-android|享受Android带给我们的新体验</a>”);实际输出时,也就是纯文本而已,并不会作HTML TAG的转换。但若撇开HTML TAG之外(如“<”开头的标记),在TextView里加上了android:autoLink=”all”,那么正文中若有网址(http://),是可以被显示的。
Theme依然在<style>元素里边申明,也是以同样的方式引用。不同的是通过在Android Manifest中定义的<application>和<activity>元素将主题添加到整个程序或者某个 Activity,但是主题是不能应用在某一个单独的View里。
主题Themes :
就像风格一样,主题依然在<style>元素里边申明,也是以同样的方式引用。不同的是你通过在AndroidManifest中定义的<application>和<activity>元素将主题添加到整个程序或者活动中——主题并不能应用于个别视图。
<wbr><wbr><?xml version="1.0" encoding="utf-8"?><br><wbr><wbr><resources><br><wbr><wbr><wbr><wbr><span style="color:#ed1c24"><strong><style name="CustomTheme</strong></span>">
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><item name="android:windowNoTitle">true</item><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><item name="windowFrame">@drawable/screen_frame</item><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><item name="windowBackground">@drawable/screen_background_white</item><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><item name="panelForegroundColor">#FF000000</item><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><item name="panelBackgroundColor">#FFFFFFFF</item><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><item name="panelTextColor">?panelForegroundColor</item><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><item name="panelTextSize">14</item><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><item name="menuItemTextColor">?panelTextColor</item><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><item name="menuItemTextSize">?panelTextSize</item><br><wbr><wbr><wbr><wbr><strong><span style="color:#ed1c24"></style></span></strong><br><wbr><wbr></resources><br>
注意:我们用了@符号和?符号来引用资源。地址符@表明我们引用的资源是其它地方定义过的(也许在这个项目中或者在Android框架中)。问号符?表明我们引用的资源的值在当前加载的主题中。这通过以名字引用特定的<item>来完成(比如,panelTextColor使用了分配给panelForegroundColor的相同颜色)。这种技巧只能用在XML资源当中。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr></wbr></wbr>
在manifest中设置主题Set the theme in the manifest :
<wbr><wbr><br>
为了给应用程序所有的活动设置主题,你可以打开清单文件AndroidManifest.xml,编辑<application>标签,让其包含android:theme属性,值是一个主题的名字,如下:</wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><strong><span style="color:#ed1c24"><application android:theme="@style/CustomTheme"><br></span></strong><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
Android中提供了几种内置的资源,有好几种主题可以用于切换而不用自己写。如果你只是想让你程序当中的某个Activity拥有这个主题,那么你可以修改<activity>标签。就像Android提供的其他内置资源一样,有好几种主题你可以切换而不用自己写。比如你可以用对话框主题来让你的活动看起来像一个对话框。在manifest中,像下面这样引用一个Android主题:
<wbr><wbr><wbr><wbr><span style="color:#ed1c24"><strong><wbr><wbr><activity android:theme="@android:style/Theme.Dialog"></wbr></wbr></strong></span></wbr></wbr></wbr></wbr>
如果你喜欢一个主题,但是想做一些轻微的调整,你只需要将这个主题添加为父主题。比如,我们将修改Theme.Dialog主题。为此,创建一个风格以Theme.Dialog为父主题:
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span style="color:#ed1c24"><strong><style name="CustomDialogTheme" parent="@android:style/Theme.Dialog"></strong></span><br>
就这样,我们已经继承了Android对话框主题,因此我们可以按照自己的意愿来调整主题。这样,对于这个对话框主题中每个我们想要改变的item,我们可以在这里重新定义它的值然后在Android Manifest 文件中使用CustomDialogTheme而不是Theme.Dialog。
<wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><br><strong><span style="color:#1648ff">在程序当中设置主题Set the theme from the application :</span></strong>
<wbr><wbr><br>
如果需要的话,你还可以以编程的方式来给一个活动加载主题。为此,要使用setTheme()方法。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
注意:这样做,你应该在初始化任何上下文中的视图之前设置主题。比如,在用setContentView(View)或者inflate(int, ViewGroup)方法前。这确保系统将当前主题应用在你所有的用户界面屏幕上。
<wbr><wbr><wbr><wbr>protected void onCreate(Bundle savedInstanceState) {<br><wbr><wbr><wbr><wbr><wbr><wbr>super.onCreate(savedInstanceState);<br><wbr><wbr><wbr><wbr><wbr><wbr>...<br><wbr><wbr><wbr><wbr><wbr><wbr><span style="color:#ed1c24"><strong>setTheme(android.R.style.Theme_Light);</strong></span><br><wbr><wbr><wbr><wbr><wbr><wbr>setContentView(R.layout.linear_layout_3);<br><wbr><wbr><wbr><wbr>}<br>
如果你打算在程序代码中来加载主界面的主题,那么需要注意这个主题将不能应用于任何系统用来启动这个活动的动画,这些动画将在应用程序启动前发生。在大多数情况下,如果你想将主题应用到你的主界面,在XML中定义是一个更好的办法。<br><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
了解关于自定义风格和主题以及如何在应用程序中引用它们的详细信息,参见可用资源类型:风格和主题Available Resource Types: Style and Themes。
了解关于缺省可用的主题和风格的信息,参见R.style
<wbr><wbr></wbr></wbr>
另:在转载一个列子定义Theme的一个例子
<?xml version=”1.0″ encoding=”UTF-8″?>
<resources>
<wbr><wbr><span style="color:#ed1c24"><strong><style name=”NewTheme” parent=”android:Theme.Black”><br></strong></span><wbr><wbr><wbr><wbr><wbr><wbr><item name=”android:windowNoTitle”>true</item><br><wbr><wbr><wbr><wbr><wbr><wbr><item name=”android:textSize”>14sp</item><br><wbr><wbr><wbr><wbr><wbr><wbr><item name=”android:textColor”>#FFFF0000</item><br><strong><span style="color:#ed1c24"></style><br></span></strong></resources></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
这些技巧只能用在XML资源当中
<wbr><wbr></wbr></wbr>
这里需要注意的是,对于theme资源的引用,资源ID不是文件名(theme.xml),而是资源名(NewTheme)。运行后的界面显示如下:
在AndroidManifest.xml中应用Theme
-
为了在当前所有的Activity当中使用Theme,可以打开AndroidManifest.xml 文件,编辑<application>标签,让其包含android:theme属性,值是一个主题的名字,
-
例如:<application android:theme=”@style/NewTheme”>
-
如果只是想让程序当中的某个Activity拥有这个Theme,那么可以修改<activity>标签。Android中提供了几种内置的资源,有好几种Theme你可以切换而不用自己写。比如可以用对话框Theme来让你的Activity看起来像一个对话框。在manifest中定义,
-
例如:<activity android:theme=”@android:style/Theme.Dialog”>
-
如果喜欢一个Theme,但是想做一些轻微的改变,只需要将这个Theme添加为parent。Android SDK为我们提供了很多现成的Theme,部分列举如下:
-
比如:我们修改Theme.Dialog Theme,继承ThemeDialog来生成一个新的Theme。
<style
parent=”@android:style/Theme.Dialog”>
继承了Theme.Dialog后,我们可以按照我们的要求来调整Theme。我们可以修改在Theme.Dialog中定义的每个item元素的值,然后我们在Android Manifest 文件中使用NewDialogTheme而不是 Theme.Dialog。
相关推荐
AndroidStudio将成为开发Android的主流,如此利器怎能没一款好看的主题样式,这是一款不错主题样式
该例子通过从外面配置ANDROID项目的主题和样式,实现修改系统默认的控件的样式和风格
Android中主题与样式演示案例!
一个十分不错的Android主题样式,懒得设置的人可以下载看看,里面包括了代码的自定义,背景,字体大小,字体颜色等的设置,基本上能设置的都设置过了
样式是指为 View 或窗口指定外观和格式的属性集合。样式可以指定高度、填充、字体颜色、字号、背景色等许多属性。 样式是在与指定布局的 XML 不同的 XML 资源中进行定义。这是研究android主题和样式的例子
android主题和样式的使用会大大减少带吗的重复,这种思想来源于前端的css,我试着用了一下,上传到这,希望大家多多指正
利用xml样式实现更换主题功能.不用重启activity.自由定制.
Android_样式(style)&主题(theme)&显示单位
android的系统自带style,用于设置android的activity主题样式
Android主题开发 主题开发 换肤换按钮样式等
这是一个很好 Android样式主题_国际化_动画资料,包含例子,全面详细教程, 供开发者参考,提高编程能力。
主题(theme)应用到整个Activity和Application的样式,当设置好主题后,Activity或整个程序中的视图都将使用主题中的属性,当主题和样式中的属性发生冲突时,样式的优先级要高于主题。 自定义主题代码如下(styles....
android 自定义各种风格button
这是下载的几款个人认为还不错的Android studio主题背景样式,想给自己 IDE 换个主题的就来下载吧
parent属性。这就不难理解style是可以继承的。在这里我们继承的是系统默认的EditText属性,只修改了背景和文字颜色而已。...找了一番终于也找到了,所有系统控件的样式是在一个style.xml文件中,这个文件也
Android 使用Font和style定义App全局字体样式,非常快速,之前有一份同样的代码,但是忘记删除一些东西了,导致文件特别大,重新上传了一份
android主题和样式的使用会大大减少带吗的重复这种思想来源于前端的css我试着用了一下.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android style(样式)和theme(主题)设置
Android广告图片轮播控件,支持无限循环和5种主题,可以灵活设置轮播样式、时间、位置、图片加载框架等!