2011-12-02 28 views
7

Sử dụng danh sách lớp bên dưới, tỷ lệ có thể vẽ của tôi không bao giờ được hiển thị. Tại sao vậy?Danh sách lớp Android không hiển thị mục có thể chia tỷ lệ?

menu_dialog_header.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
    <shape> 
     <solid android:color="@color/black"></solid> 
    </shape> 
    </item> 
    <item> 
    <scale 
     android:scaleHeight="50%" 
     android:scaleWidth="100%" 
     android:scaleGravity="top" 
     android:drawable="@drawable/shine" /> 
    </item> 
</layer-list> 

shine.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="@color/shine" /> 
</shape> 

menu_dialog.xml

<!-- header --> 
<LinearLayout 
    android:background="@drawable/menu_dialog_header" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal|center" 
    android:padding="8dp" 
    android:orientation="horizontal" > 
    ... 
+0

Bạn có thể theo dõi điều này không? – Bostone

Trả lời

13

Tôi có một giải pháp thay thế có thể có hoặc không hoạt động cho bạn: thay vì sử dụng <scale> , hãy thử <inset>. Bạn có thể sử dụng một sự kết hợp của android các 's android:top/android:bottom/android:left/android:right<inset>' <item> s: insetXXX kích thước hình ảnh

Bạn có thể làm những việc như thiết lập các mặt của mỗi giá trị inset so với nguồn hình ảnh của bạn kích thước. Ví dụ: nếu bạn có hình ảnh có chiều rộng 64 pixel và muốn cắt giảm 50%, bạn có thể làm (64/4 = 16) cho mỗi bên

+1

Tôi không hiểu cách này khác với việc sử dụng một mục. Bạn có thể cung cấp một ví dụ ? –

+1

@ Joe bạn, bạn của tôi, là một vị vua! Tôi đã phải làm điều đó theo lập trình để có một cơ chế tổng quát hơn, do đó, có một vấn đề bất biến, nhưng ý tưởng inset này là chính xác những gì tôi cần. – AsafK

+1

Hài hước, chỉ cần quay lại Android và quên tôi đã hỏi câu hỏi này. Tôi đang sử dụng câu trả lời inset này trong một dự án mới, vì tôi không tin rằng đó là một lựa chọn trở lại trong năm 2011 (v2.3). – worked

7

Nó không chính xác lỗi của LayerLists. ScaleDrawable bổ sung phụ thuộc vào mức drawable của mức, như (một thời gian ngắn) được đề cập trong cả hai tài nguyên Drawable và tham chiếu ScaleDrawable.

Dường như không có tài liệu nào về cách ScaleDrawable sẽ diễn giải cấp.

Dường như không có cách nào để đặt mức có thể vẽ trong XML, phản ánh thực tế là trường hợp sử dụng chính cho ScaleDrawable là kích hoạt kích thước có thể vẽ. Do đó, bạn sẽ phải thiết lập mức độ drawable trong mã của bạn.

Tôi mạnh mẽ thông cảm với việc bạn sử dụng ScaleDrawable tại đây, vì nó cho phép một cách mạnh mẽ hơn để ngăn xếp các bản vẽ bằng cách định vị chúng và xác định kích thước của chúng.

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