2011-09-29 47 views
14

Tôi có ba bản vá của 9 bản vá mà cùng nhau tạo nền cho nút (bên trái, giữa, bên phải). Tôi muốn kết hợp ba hình ảnh với nhau trong một drawable mà tôi có thể xác định như là nền tảng cho một nút trong XML, một cái gì đó dọc theo dòng:Làm cách nào để tạo một hình ảnh có thể vẽ từ nhiều hình ảnh?

res/drawable/button_background.xml:

<?xml version="1.0" encoding="utf-8"?> 
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android" 
android:src="@drawable/button_left_side" /> 

<nine-patch android:src="@drawable/button_middle" /> 

<nine-patch android:src="@drawable/button_right_side" /> 

res/layout/main.xml:

<button android:background="@drawable/button_background" /> 

Điều này có thể không?

Trả lời

33

Sau một số lần thử và lỗi, tôi đã có thể giải quyết vấn đề một cách thỏa đáng. Tôi chỉ đơn giản là thực hiện một Layer-Danh sách drawable như sau:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@drawable/btn_left" android:left="0px" /> 
    <item android:drawable="@drawable/btn_middle" 
     android:left="26px" android:right="26px" /> 
    <item android:drawable="@drawable/btn_right" android:right="0px" /> 
</layer-list> 

Trường hợp 26px giá trị là độ rộng của hai hình ảnh nút bên bằng pixel.

Để sử dụng drawable này, chỉ cần gọi nó giống như bất kỳ drawable khác:

<bitmap android:src="@drawable/button_background" /> 

này hoạt động chính xác như bạn mong chờ nó, với tuyến giữa, mở rộng như bình thường để phù hợp với chiều rộng mong muốn, và cả ba hình ảnh mở rộng để phù hợp với chiều cao mong muốn. Tôi hy vọng những người khác có thể hưởng lợi từ điều này!

+3

Nó sẽ cho kết quả tốt hơn nếu "dp" được sử dụng thay vì "px". Sử dụng px sẽ dẫn đến các nút trái và phải rất nhỏ ở các thiết bị mật độ cao. – seema

Các vấn đề liên quan