美文网首页我爱编程
Android 自定义属性

Android 自定义属性

作者: 一只笔 | 来源:发表于2018-06-21 11:27 被阅读5次
  • 1.自定义随主题改变的属性, 如果是自定义控件,请在style.xml中或attrs.xml中声明属性。在values 文件夹下新 attrs
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="Primary">
        <attr name="colorBaseNormal" format="reference"/>
        <attr name="colorBasePressed" format="reference"/>
        <attr name="colorBaseDisable" format="reference"/>
    </declare-styleable>
</resources>
  • 2.在Theme中使用自定义的属性,可以再多个主题中定义不同的属性值
<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorBaseNormal">@color/colorBaseNormal</item>
        <item name="colorBasePressed">@color/colorBasePressed</item>
        <item name="colorBaseDisable">@color/colorBaseDisable</item>
    </style>
  • 3.这样就可以在xml中使用自定义控件的自定义属性,这个属性会随着主题而改变:
 <TextView      
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"        
            android:textColor="?attr/colorBaseNormal" />

@和?的区别


  • 使用@表示使用固定的style,而不会跟随Theme改变,这style可以在对应的style.xml中找到。
  • 使用?表示从Theme中查找引用的资源名,这个google叫预定义样式,用在多主题时的场景,属性值会随着主题而改变。(?需要和attr配合使用)

相关文章

网友评论

    本文标题:Android 自定义属性

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