I'm trying to reuse primitive shapes and compose much of my user interface using these declarative XML elements.
How to make a variable Android attribute?
But I do not want to create a separate XML file for each attribute value, and their permutations, and in the process duplicate much of the work.
For instance, I would like the consumer of this shape be able to define the android:radius value?
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#449def"
android:endColor="#2f6699"
android:angle="270"/>
<stroke
android:width="1dp"
android:color="#2f6699"/>
<corners
android:radius="3dp"/>
</shape>
Set attribute from consuming XML parent?
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/shape_box_round_blue_uniform" />
<!-- How to set the corner radius here? -->
<item android:drawable="@drawable/shape_box_round_blue" />
</selector>
Solutions?
- If at all possible, I would like to not use any Java code-behind / avoid the need to create custom controls / classes
- Using dimension resources may be a fruitful avenue?