2011-08-18 25 views
27

Tôi gặp sự cố với việc đặt kích thước có thể vẽ trong danh sách lớp. XML của tôi trông giống như sau:Cách đặt kích thước có thể kéo trong danh sách lớp

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/menu_drawable1"/> 
    <item android:drawable="@drawable/menu_drawable2"/>  
</layer-list> 

Drawable1 lớn hơn Drawable2, vì vậy Drawable2 được thay đổi kích thước. Làm thế nào để ghi đè lên điều này và thiết lập kích thước ban đầu của Drawable2? Tôi không muốn nó thay đổi kích thước. Tôi đã thử với thiết lập chiều rộng và chiều cao nhưng điều đó không hoạt động. Ngoài ra các drawables không thực sự là bitmap, chúng là selectos, vì vậy tôi không thể sử dụng thủ thuật bitmap.

+0

Tôi thực sự muốn biết về mẹo bitmap u đã đề cập :) có phải bạn muốn nhúng bitmap vào thẻ mục không? – Ready4Android

+0

Tôi cũng thấy câu hỏi này khá liên quan. Mặc dù thủ thuật của bạn được viết ở phía dưới giúp ích. – PSIXO

Trả lời

0

Có vẻ như tôi đã có một nửa giải pháp bằng cách sử dụng "trái" và "phải", nhưng vẫn vậy, điều này không cho phép tôi đặt kích thước chính xác của hình ảnh một cách tự động. Bây giờ xml của tôi trông như thế này:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/menu_drawable1"/> 
    <item android:drawable="@drawable/menu_drawable2" android:right="150dp"/>  
</layer-list> 
0

Hy vọng điều này sẽ giúp: -
Bạn có thể sử dụng một drawable chín bản vá cho menu_drawable2. Bạn có thể tạo menu_drawable2 như có vùng trong suốt xung quanh. Sử dụng vùng trong suốt này để chỉ định vùng có thể kéo dài trong chín bản vá.

2

Bạn có thể sử dụng thẻ inset cho mục này. Ví dụ

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/menu_drawable1"/> 
    <item> 
     <inset android:drawable="@drawable/menu_drawable2" 
      android:insetRight="50dp" 
      android:insetTop="50dp" 
      android:insetLeft="50dp" 
      android:insetBottom="50dp" /> 
    </item> 

này sẽ tạo ra miếng đệm xung quanh bạn menu_drawable2 nên won `t được thu nhỏ lại. Chỉ cần đặt kích thước mà bạn yêu cầu.

+0

Nếu bạn sử dụng nhiều insets tuy nhiên nó có vẻ tích lũy.Rất đáng lo ngại. – JohnyTex

+1

lưu ý, không hoạt động với vector – djdance

3

Bạn có thể sử dụng các thông số android: widthandroid: height với các giá trị mong muốn.

Dưới đây là danh sách lớp có thể vẽ và ảnh chụp màn hình mẫu. Tôi đã sử dụng vectơ drawable từ google material icons và có thể chọn riêng của bộ chọn.

gốc circle.xml hình drawable có 100dp x 100dp kích thước, nhưng vào drawable.xml tôi ghi đè giá trị này để 24dp x 24dp bởi android: chiều rộngandroid: chiều cao tham số.

Tôi hy vọng sự trợ giúp này!

drawable.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/circle" android:height="24dp" android:width="24dp"/> 
    <item android:drawable="@drawable/ic_accessibility_black_24dp"/> 
    <item android:drawable="@drawable/ic_http_white_24dp" android:gravity="center" android:top="-3dp" android:height="5dp" android:width="5dp"/> 
</layer-list> 

circle.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:innerRadius="20dp" android:shape="oval"> 
      <solid android:color="#CCC" /> 
      <size android:width="100dp" android:height="100dp"/> 
     </shape> 
    </item> 
</selector> 

screen shot

+8

Tuyên bố từ chối trách nhiệm: chiều rộng và chiều cao là API 23+ – OldSchool4664

-3

i dont know tác phẩm của mình hay không nhưng bạn đã cố gắng để tách họ khỏi nhau?

một cái gì đó như thế này:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/menu_drawable1"/> 
</layer-list> 
<layer-list> 
    <item android:drawable="@drawable/menu_drawable2"/>  
</layer-list> 

hoặc đặt cái gì khác betwen họ như bố trí trống với chiều cao và chiều rộng 0dp.

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