美文网首页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