Android: Default attributes for custom views

后端 未结 3 996
渐次进展
渐次进展 2021-02-14 20:24

I have a custom view that extends one of the framework classes. Most Views in Android have some default attributes defined for them (such as Button bei

相关标签:
3条回答
  • 2021-02-14 21:08

    I solved my own problem thusly:

    res/values/attrs.xml:

    <resources>
        <attr name="customViewStyle" type="reference" />
    </resources>
    

    res/values/styles.xml:

    <resources>
        <style name="AppTheme" parent="@android:style/Theme.Light">
            <item name="android:background">@drawable/bg_light</item>
            <item name="customViewStyle">@style/CustomView</item>
        </style>
    
        <style name="CustomView">
            <item name="android:clickable">true</item>
            <item name="android:focusable">true</item>
            <item name="android:focusableInTouchMode">true</item>
        </style>
    </resources>
    

    Then all you do is set the theme in the manifest to AppTheme. This also works with standard widgets using android:[widget]Style in place of customViewStyle in the definition of AppTheme.

    0 讨论(0)
  • 2021-02-14 21:12

    I think you will need to override the View constructors that take an AttributeSet argument, and build your own modified AttributeSet to pass to the superclass constructor.

    EDIT: Even easeer, just have your View subclass constructor call setClickable etc to change the defaults to what you want.

    0 讨论(0)
  • 2021-02-14 21:13

    You could additionally create a style for this layout and set the style where you use the view.

    source: http://developer.android.com/guide/topics/resources/style-resource.html

    0 讨论(0)
提交回复
热议问题