2011-09-01 8 views
14

Tôi có tập thể vẽ sau đây là một nền tảng:android, nền, lớp-list và bitmap khả năng mở rộng mục

<?xml version="1.0" encoding="utf-8"?> 
<layer-list 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<item> 
    <bitmap android:src="@drawable/base_bg" 
    android:gravity="bottom" /> 
</item> 
<item android:top="10dp" android:left="10dp"> 
    <bitmap android:src="@drawable/decoration1" 
    android:gravity="top|right" 
    android:width="25dp" 
    android:height="25dp" /> 
</item> 
<item android:top="10dp" android:left="10dp"> 
    <bitmap android:src="@drawable/decoration2" 
    android:gravity="top|right" 
    android:width="25dp" 
    android:height="25dp" 
    /> 
</item> 
</layer-list> 

Nó hiển thị tất cả các bitmap (base_bg, decoration1, và decoration2) nhưng tôi không thể tìm thấy một cách để sửa đổi kích thước của chúng. Tôi muốn có nền chính và trên đó là đồ trang trí có kích thước khác nhau dựa trên dpi. Có một cách đơn giản để làm điều đó, hay tôi thực sự phải có một loạt các "đồ trang trí" cho các dpi khác nhau? Nó không tốt và tôi muốn thay đổi kích thước/thay đổi kích thước!

Thuộc tính android:widthandroid:height là thứ tôi muốn tìm, nhưng tôi biết rằng nó không hoạt động. Hiện tại tôi đang sử dụng các phiên bản khác nhau cho các DPI khác nhau nhưng hy vọng nó có thể thân thiện hơn một chút.

+0

có thể bạn nên xem xét bố cục khung thay vì: sau đó bạn có thể sửa đổi từng chế độ xem một cách cụ thể. – RichieHH

Trả lời

9

Tôi không biết các ảnh này như thế nào, nhưng ví dụ, bạn có thể tạo một hình ảnh lớn và sử dụng nó trong một mục android: drawable field, theo cách này, hình ảnh có kích thước của mục.

<layer-list 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<item> 
    <bitmap android:src="@drawable/base_bg" 
    android:gravity="bottom" /> 
</item> 
<item android:top="10dp" android:left="10dp" android:drawable="@drawable/decoration1"> 
</item> 
<item android:top="10dp" android:left="10dp" android:drawable="@drawable/decoration2"> 
</item> 
</layer-list> 

giải pháp khác có thể là để làm điều đó lập trình với LayerDrawable (here) và drawable (here) các lớp học. Bạn có thể xây dựng đối tượng lớp với 3 đối tượng Drawable và sau đó chọn kích thước chính xác trên mỗi đối tượng Drawable với phương thức setBounds (Rect).

Tôi hy vọng nó sẽ giúp bạn.

+0

lớp [1] .setBounds (4, 4, 4, 4); <- không làm việc -.- –