Tôi đang chuẩn bị các bản vẽ cho ứng dụng của mình. Tôi đã có rất nhiều radiobutton, đang được hiển thị như hình ảnh với khung tùy chọn (khi được chọn). Một vẻ drawable như sau:Sử dụng lại các phần có thể drawable trên Android
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
</shape>
</item>
<item>
<inset android:insetTop="@dimen/selectionBorderSize"
android:insetLeft="@dimen/selectionBorderSize"
android:insetRight="@dimen/selectionBorderSize"
android:insetBottom="@dimen/selectionBorderSize">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff"></solid>
</shape>
</item>
<item>
<bitmap android:src="@drawable/sharp7" >
<padding android:bottom="@dimen/selectionBorderSize"
android:top="@dimen/selectionBorderSize"
android:left="@dimen/selectionBorderSize"
android:right="@dimen/selectionBorderSize" />
</bitmap>
</item>
</layer-list>
</inset>
</item>
</layer-list>
</item>
<item android:state_checked="false">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</item>
<item>
<inset android:insetTop="@dimen/selectionBorderSize"
android:insetLeft="@dimen/selectionBorderSize"
android:insetRight="@dimen/selectionBorderSize"
android:insetBottom="@dimen/selectionBorderSize">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff"></solid>
</shape>
</item>
<item>
<bitmap android:src="@drawable/sharp7" >
<padding android:bottom="@dimen/selectionBorderSize"
android:top="@dimen/selectionBorderSize"
android:left="@dimen/selectionBorderSize"
android:right="@dimen/selectionBorderSize" />
</bitmap>
</item>
</layer-list>
</inset>
</item>
</layer-list>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</item>
</selector>
Một số khác:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
</shape>
</item>
<item>
<inset android:insetTop="@dimen/selectionBorderSize"
android:insetLeft="@dimen/selectionBorderSize"
android:insetRight="@dimen/selectionBorderSize"
android:insetBottom="@dimen/selectionBorderSize">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff"></solid>
</shape>
</item>
<item>
<bitmap android:src="@drawable/sharp6" >
<padding android:bottom="@dimen/selectionBorderSize"
android:top="@dimen/selectionBorderSize"
android:left="@dimen/selectionBorderSize"
android:right="@dimen/selectionBorderSize" />
</bitmap>
</item>
</layer-list>
</inset>
</item>
</layer-list>
</item>
<item android:state_checked="false">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</item>
<item>
<inset android:insetTop="@dimen/selectionBorderSize"
android:insetLeft="@dimen/selectionBorderSize"
android:insetRight="@dimen/selectionBorderSize"
android:insetBottom="@dimen/selectionBorderSize">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff"></solid>
</shape>
</item>
<item>
<bitmap android:src="@drawable/sharp6" >
<padding android:bottom="@dimen/selectionBorderSize"
android:top="@dimen/selectionBorderSize"
android:left="@dimen/selectionBorderSize"
android:right="@dimen/selectionBorderSize" />
</bitmap>
</item>
</layer-list>
</inset>
</item>
</layer-list>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</item>
</selector>
Nếu bạn không muốn chơi "tìm thấy 2 sự khác biệt", điều duy nhất thay đổi là hình ảnh trong <bitmap>
thẻ.
Tôi cảm thấy toàn bộ WET tại đây. Có cách nào để sử dụng lại một phần của điều này không?
WET, ví dụ: không phải DRY