像HTML/CSS中的style一样,android也可以使用自定义的style样式
一般是在value 文件夹下面建一个styles.xml文件
样式是用于描述一个View或是一个窗口的显示属性的集合,样式可以指定如高度,填充,字体颜色,字体大小,背景颜色等属性。样式是从布局文件中分离出来
的一个XML资源文件。Android中的样式就像Web开发中的css样式表,它使用我们的样式独立于内容进行设计开发。
例如,通过使用一个样式可以让如下的布局文件
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#00FF00"
android:typeface="monospace"
android:text="@string/hello" />
简化为
<TextView
style="@style/CodeFont"
android:text="@string/hello" />
所有和样式有关的属性都被从布局XML文件中移动到一个叫“CodeFont”的样式定义中,然后使用一个style属性指定样式名称。你将会在以下的内容中看到如何定义一个样式。
应用于一个Activity或应用程序的样式称为主题(theme),而不是刚才说的一个View。所有在当前Activity或应用下的视图
(VIEW)都会应用相同的主题样式。例如,您可以让一个Activity使用”CodeFont”主题,那么这个Activity下的所有视图的的文本
都将是绿色等宽字体。
定义样式
定义样式我们需要在 res/values/目录下新建一个XML文件,文件名自已随便命名,但必须以.xml为文件后缀。Xml的根节点必须为。
我们用style标签来定义一个样式,用标签来定义样式属性。如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CodeFont" 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">#00FF00</item>
<item name="android:typeface">monospace</item>
</style>
</resources>
Style标签的name属性是必须有的,节点可以定义颜色、高度或者是另一个资源的引用。所有节点的子节点在
编译时都会做为应用程序的一个资源。所以我们可以通过style节点的name属性值来引用这个资源。比如在布局文件中使用
@style/CodeFont来引用这个样式。parent
属性是可选的,用它来标识本样式是继承哪个样式,在父样式中的所有属性都将被应用于本样式中,同时可以覆盖父样式中的样式(和java的继承相似)。
样式的继承
这里有两种方式可以实现样式继承,如上例中所示的,我们可以在定义样式时使用parent属性来继承样式,使用这种方式,我们可以继承一个我们自己定义好
的样式,也可以继承一个android平台自带的样式(后文中会介绍android平台自带的所有样式)。如下所示,我们继承一个android平台默认
的文本样式,并把它的字体颜色改为我们需要的颜色。
<style name="GreenText" parent="@android:style/TextAppearance">
<item name="android:textColor">#00FF00</item>
</style>
另一种继承的方式是使用用户自定义的样式作为前缀即可。这种方式只适用于继承用户自定义样式。如下所示:
<style name="CodeFont.Red">
<item name="android:textColor">#FF0000</item>
</style>
这样,新定义的样式就会继承CodeFont样式的所有属性,然后把字体颜色变为#FF0000。我们可以这样引用新的样式: @style/CodeFont.Red
相同的方法,我们可以再继承下去,如下所示:
<style name="CodeFont.Red.Big">
<item name="android:textSize">30sp</item>
</style>
这样新的样式文子的大小就和CodeFont.Red样式不同了。
样式属性
到这里为止,你已经知道了如何定义一个样式,你还需要知道有多少种样式属性可以通过节点来定义。你可能已经对其中的一些比较熟悉了,如layout_width 、textColor等。当然,还有很多的样式属性是你可以使用的。
最好的方法查询一个视图支持哪些样式属性的方法是查询视图类的文档中XML Attributes表格,如TextView的XML
attributes如链接中所示:
http://www.ideasandroid.com/android/sdk/docs/reference/android/widget/TextView.html#lattrs
如需所有可用的样式属性的,请参阅R.attr: http://www.ideasandroid.com/android/sdk/docs/reference/android/R.attr.html
不是所有的视图都支持上面的样式属性,如果遇到不支持的样式属性,您定义的属性将会被忽略。
应用样式和主题
应用样式和主题的方法很简单,在布局定义文件(layout)中,使用style属性直接引用样式资源,如下所示:
<TextView
style="@style/CodeFont"
android:text="@string/hello" />
在AndroidManifest.xml文件中可以引用样式主题,可以为一个Activity定义一个主题,也可以为整个应用程序定义一个主题,如下所示:
<application android:theme="@style/CustomTheme">
或者
<activity android:theme="@style/CustomDialogTheme">
Android平台的样式和主题
样式见:http://www.ideasandroid.com/android/sdk/styles.xml
主题见:http://www.ideasandroid.com/android/sdk/themes.xml
转载请注明出处 http://www.ideasandroid.com/archives/322
分享到:
相关推荐
还可以通过创建主题和样式文件(如styles.xml)来全局改变RadioButton的样式: ```xml <style name="CustomRadioButtonStyle" parent="Widget.AppCompat.CompoundButton.RadioButton"> <item name="android:button...
综上所述,自定义Android的Preference样式涉及到多个层次,包括使用主题、布局、视图、属性和代码动态修改。理解这些方法,开发者可以根据自己的需求为用户创造更加美观和个性化的设置界面。在实际项目中,应根据...
在Android开发中,...总之,自定义Android按钮控件样式是一个涉及多方面技能的过程,需要对XML布局、选择器、自定义View以及主题和样式有深入的理解。通过不断实践和学习,开发者可以创造出极具个性化的交互体验。
总结来说,Android自定义Style的实现步骤包括: 1. 在`styles.xml`文件中创建一个`<style>`标签,定义样式名称,并可选地指定父样式(parent)。 2. 在`<style>`标签内部,使用`<item>`标签为控件设置属性,如`...
可以通过设置主题或者在布局文件中应用自定义样式来改变`DatePicker`的颜色、字体等外观。例如,你可以创建一个自定义的主题: ```xml <style name="CustomDatePickerTheme" parent="Theme.AppCompat.Light"> ...
最后,为了让自定义`Switch`按钮在不同的设备和Android版本上保持一致的外观和行为,可以使用`style`和`主题`进行适配。在`res/values/styles.xml`中定义自定义样式,并在应用程序的主主题中应用: ```xml <style ...
下面我们将深入探讨Android自定义主题的相关知识点。 1. **主题与样式** - **主题(Themes)**:在Android中,主题是一种全局的UI设置,可以影响整个应用程序或特定的Activity。它们定义了控件的颜色、字体、背景...
本文将深入探讨如何创建一个美观的自定义拖动条控件,即"Android自定义控件之拖动条"。我们将讨论以下几个关键知识点: 1. **基础知识**:在Android中,基本的滑动条控件是`SeekBar`,它允许用户通过拖动滑块来选择...
总的来说,自定义Android Button的各种风格涉及到了颜色资源、颜色选择器、渐变色、文字样式、边框形状等多个方面。通过灵活运用这些技巧,开发者可以创造出独特且符合设计需求的Button,提升应用的用户体验。
完全自定义意味着我们需要超越默认的AlertDialog样式,创建自己的布局文件和主题,以满足特定的设计需求。这通常涉及到以下几个步骤: - 创建一个XML布局文件,定义对话框的内容和样式。 - 创建AlertDialog.Builder...
在Xamarin.Android开发中,创建自定义标题栏是提升应用用户体验和界面个性化的重要步骤。Xamarin是一个强大的跨平台开发工具,允许开发者使用C#语言构建原生的iOS、Android和Windows应用程序。本教程将深入探讨如何...
总结,Android自定义标题栏是一项关键的UI定制技术,它让开发者能够创建符合品牌风格的界面,提升用户交互体验。通过学习和实践,我们可以熟练掌握自定义标题栏的各种技巧,包括但不限于添加菜单项、设置点击事件、...
9. **主题样式**:如果需要全局统一的风格,可以通过创建自定义的主题(Theme)和样式(Style),然后在弹出窗的布局文件中引用。 10. **兼容性测试**:由于Android设备的多样性,确保自定义弹出窗在不同屏幕尺寸、...
在Android开发中,自定义样式(style)和主题(theme)是两个关键的概念,它们极大地提升了应用的界面设计灵活性和用户体验。自定义样式允许开发者为UI组件设定特定的外观和行为,而主题则可以全局统一应用的视觉风格。...
可以使用`style.xml`文件定义主题,或者直接在XML布局中设置。 三、键盘逻辑实现 1. 创建键盘服务:继承`InputMethodService`类,并重写其生命周期方法和关键方法,如`onCreateInputView()`用于返回自定义键盘的...
在Android的资源文件夹`res/values/styles.xml`中,你可以定义一个主题样式,将字体样式包含其中: ```xml <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar"> <!-- Other style ...
本文将深入探讨如何自定义Android的TabHost控件样式。 首先,我们从基础开始。TabHost是Android提供的一个布局容器,它包含一个TabWidget(显示各个Tab)和一个FrameLayout(用于显示被选中的Tab的内容)。默认的...
自定义属性的引用不仅限于自定义视图,还可以用于其他组件和布局,比如主题样式。在主题中定义自定义属性,可以在全局范围内统一控制界面风格: ```xml <style name="AppTheme" parent="Theme.AppCompat.Light....
在Android开发中,自定义对话框(Dialog)是一种常见的需求,它可以提供更加个性化的用户体验。本文将详细讲解如何实现一个自定义的右上角带有“X”文字按钮的Dialog,这个按钮可以用来关闭Dialog。 首先,我们需要...