2011-12-02 65 views
7

使用下面的圖層列表,我的縮放比例從不顯示。這是爲什麼?Android圖層列表不顯示比例可繪製項目?

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

您是否可以跟蹤此問題? – Bostone

回答

13

我有一個解決方法,可能會或可能不會爲您工作:而不是使用<scale> ,請嘗試<inset>。您可以使用<item>android:top/android:bottom/android:left/android:right<inset>的Android的組合:insetXXX大小的圖像

你可以做這樣的事情每個插入值相對的設置雙方源圖像的尺寸。例如,如果您有64像素寬的圖像,並且想將其裁減50%,則可以對每一邊執行(64/4 = 16)

+1

我不明白這與單次使用物品有何不同。你能提供一個例子嗎? –

+1

@Joe你,我的朋友,是國王!我不得不以編程的方式來實現它,以便有一個更一般的機制,所以存在一個不可變性的問題,但這個插入的想法正是我所需要的。 – AsafK

+1

有趣的是,剛回到Android並忘記我問了這個問題。我在一個新項目中使用這個嵌入式答案,因爲我不相信這是2011年的選項(v2.3)。 – worked

7

這不是恰恰是LayerLists的錯。 ScaleDrawable另外還取決於可繪製的級別,(簡要地)在Drawable Resources和ScaleDrawable參考中都提到過。

似乎沒有關於ScaleDrawable如何解釋關卡的文檔。

似乎沒有辦法在XML中設置drawable的級別,這反映了ScaleDrawable的主要用例是爲drawable的大小設置動畫。因此,您必須在代碼中設置drawable的級別。

我非常同情你在這裏使用ScaleDrawable,因爲它允許通過定位和定義它們的大小來更有效地堆疊drawables。