美文网首页Android开发经验谈Android开发Android开发
Android样式开发之style、theme、attr总结

Android样式开发之style、theme、attr总结

作者: 芒果味的你呀 | 来源:发表于2017-11-01 19:48 被阅读190次

大纲:

  • Attr:属性,风格样式的最小单元;
  • Style:风格,它是一系列Attr的集合用以定义一个View的样式,比如height、width、padding等;
  • Theme:主题,它与Style作用一样,不同于Style作用于个一个单独View,而它是作用于Activity上或是整个应用。

attr

看一看源码中的代码片段

<declare-styleable name="ViewGroup_Layout">
    <attr name="layout_width" format="dimension">
        <enum name="fill_parent" value="-1" />
        <enum name="match_parent" value="-1" />
        <enum name="wrap_content" value="-2" />
    </attr>
    ...
</declare-styleable>

如果我们自己想使用可以在values下新建一个attrs.xml,在<resources>元素里面首先申明一个自己的<declare-styleable>表示一个属性组,再在里面加上属性就行。


Style

样式style是指为view或窗口指定外观和格式的属性集合。样式可以指定高度、填充、字体颜色、字号、背景色等许多属性。 样式是在与指定布局的 XML 不同的 XML 资源中进行定义。

定义样式:

  • 要创建一组样式,请在您的项目的 res/values/ 目录中保存一个 XML 文件。 可任意指定该 XML 文件的名称,但它必须使用 .xml 扩展名,并且必须保存在 res/values/ 文件夹内。
  • 该 XML 文件的根节点必须是 <resources>。
  • 对于您想创建的每个样式,向该文件添加一个 <style> 元素,该元素带有对样式进行唯一标识的 name 属性(该属性为必需属性)。然后为该样式的每个属性添加一个 <item> 元素,该元素带有声明样式属性以及属性值的 name(该属性为必需属性)。
  • <resources> 元素的每个子项都会在编译时转换成一个应用资源对象,该对象可由 <style> 元素的 name 属性中的值引用。 可从 XML 布局以 @style/CodeFont 形式引用该示例样式(如上文引言中所示)。
  • <style> 元素中的 parent 属性是可选属性,它指定应作为此样式所继承属性来源的另一样式的资源 ID。 如果愿意,您可在随后替换这些继承的样式属性。
  • 根据样式属性,<item> 的值可以是关键字字符串、十六进制颜色值、对另一资源类型的引用或其他值。以下是一个包含单个样式的示例文件:
<?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>

使用:
      <TextView
    style="@style/CodeFont"
    android:text="@string/hello" />

Theme:是指对整个Activity或应用application而不是对单个 view应用的样式。 以主题形式应用样式时,Activity 或应用中的每个视图都将应用其支持的每个样式属性。 例如,您可以 Activity 主题形式应用同一 CodeFont样式,之后该 Activity 内的所有文本都将具有该字体的样式。需要在相应的<activity>标签或<application>标签里设置android:theme属性,引用的其实也是style,但一般称为主题。

<resources> 
    <style name="AppTheme" parent="Theme.AppCompat">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="windowAnimationStyle">@style/WindowAnimation</item>
    </style>
</resources>

使用:
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <!-- activity here -->
</application>

应用

设置样式的方法有两种:

  • 如果是对单个视图应用样式,请为布局 XML 中的 View 元素添加 style 属性。
  • 如果是对整个 Activity 或应用来应用样式,请为 Android 清单中的 <activity> 或 <application> 元素添加 android:theme 属性。

相关文章

网友评论

    本文标题:Android样式开发之style、theme、attr总结

    本文链接:https://www.haomeiwen.com/subject/jvmmpxtx.html