Tài nguyên StateListDrawable <selector>
StateListDrawable là loại Drawable mà nó chứa nhiều phần tử <item> bên trong, mỗi phần tử này biểu diễn một Drawable, chúng biểu diện một vài trạng thái nào đó của View khi làm đối tượng đồ họa cụ thể trong từng loại View như làm nền, làm biểu tượng lựa chọn ...
Cú pháp xml tạo ra StateListDrawable như sau:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <!--Drawable của item--> </item> <item> <!--Drawable của item--> </item> <!-- ... --> </selector>
Thuộc tính của <item> trong LayerDrawable
<item> (lớp) của LayerDrawable bên trong nó có chứa phần tử con là bất kỳ loại Drawable nào đã biết như bitmap, vector ... và có thể thiết lập các thuộc tính như sau:
Thuộc tính | Ý nghĩa |
---|---|
android:state_pressed android:state_checked android:state_selected android:state_activated android:state_focused android:state_active android:state_enabled |
Thiết lập bằng true thì Drawable của Item biểu diễn trạng thái tương ứng. Nếu thiết lập bằng false biểu diễn không kích hoạt trạng thái có tên tương ứng. Nếu không thiết lập thì không có diễn tả gì cho trạng thái đó. Ví dụ:
|
Ví dụ StateListDrawable
Tạo file xml có tên res/drawable/statelistexample.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:dither="true"> <item android:state_pressed="true"> <shape android:shape="oval"> <gradient android:angle="270" android:endColor="#D1362B" android:startColor="#94231B" /> <stroke android:width="1dp" android:color="#96231D" /> <corners android:radius="4dp" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> <item> <shape> <gradient android:angle="270" android:endColor="#94231B" android:startColor="#D1362B" /> <stroke android:width="1dp" a ndroid:color="#96231D" /> <corners android:radius="4dp" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> </selector>
StateListDrawable này biểu thị hai trạng thái nhấn / không nhấn. Khi không nhấn dùng Drawable có hình chữ nhật, khi nhấn dùng Drawable có hình Oval. Đặt làm nền cho Button có kết quả như sau: