I would like to specify just once in res/values/styles.xml the size of two checkboxes and their four shape drawables
This way the size would appear one time in the style rather than four in the drawables.
Neither of the two attempts below work. Can you suggest a solution? (If you see what's wrong with these two attempts, please do mention it.)
----------------------------------------------------------------Attempt 1----------------------------------------------------------------
Replace
res/drawable/cb1_checked.xml
<size android:width="24dp"
android:height="24dp" />
with
res/values/styles.xml
<item name="android:layout_width">24dp</item>
<item name="android:layout_height">24dp</item>
----------------------------------------------------------------Attempt 2----------------------------------------------------------------
Add
res/values/styles.xml
<item name="android:background">cb_background</item>
and define a background drawable
res/drawable/cb_background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#00FF00"/>
<size android:width="24dp"
android:height="24dp" />
</shape>
----------------------------------------------------------------Added----------------------------------------------------------------
Here is the full set of XML files:
res/layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MyLL"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/cb1"
style="@style/CB_style"
android:button="@drawable/cb1_selector"
android:height="@dimen/my24sp" />
<CheckBox
android:id="@+id/cb2"
style="@style/CB_style"
android:button="@drawable/cb2_selector"
android:height="@dimen/my24sp" />
</LinearLayout>
res/values/styles.xml
<style name="AppBaseTheme" parent="android:Theme.Light">
</style>
<style name="AppTheme" parent="AppBaseTheme">
</style>
<style name="CB_style" parent="@android:style/TextAppearance.Medium">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_gravity">center_horizontal</item>
<item name="android:gravity">center</item>
<item name="android:checked">false</item>
</style>
res/drawable/cb1_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true">
<item android:state_checked="true"
android:drawable="@drawable/cb1_checked" />
<item android:state_checked="false"
android:drawable="@drawable/cb1_unchecked" />
</selector>
res/drawable/cb1_checked.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FF0000"/>
<size android:width="24dp"
android:height="24dp" />
</shape>
res/drawable/cb1_unchecked.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#880000"/>
<size android:width="24dp"
android:height="24dp" />
</shape>
(and similarly for the cb2 selector and checked/unchecked drawables)
Supported file types are PNG (preferred), JPG (acceptable), and GIF (discouraged).
A drawable resource is a general concept for a graphic that can be drawn to the screen and which you can retrieve with APIs such as getDrawable(int) or apply to another XML resource with attributes such as android:drawable and android:icon . There are several different types of drawables: Bitmap File.
Right Click on Drawable folder -> New -> Drawable Resource File , will create a XML file inside the Drawable folder.
There is a weak solution, weak in the sense that android:width and android:height still appear four times, but at least the dimension can be adjusted by setting just one parameter.
For each of the four drawables, add
<size android:width="@dimen/my24dp"
android:height="@dimen/my24dp" />
and also define the dimension
res/values/dimens.xml
<dimen name="my24dp">24dp</dimen>
So the question remains: Can the size not be specified at all in the drawables?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With