I have a custom view that extends one of the framework classes. Most View
s in Android have some default attributes defined for them (such as Button
bei
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.
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.
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