2014-09-04 35 views
1

我有一個ImageView<layer-list>/res/drawable/。這是層列表:ImageView src和背景標記使用<layer-list>時集中<bitmap>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item> 
    <!-- This is a 24dp x 24dp PNG --> 
    <bitmap android:src="@drawable/ic_secondary_arrow" 
      android:gravity="center"/> 
</item> 
<item> 
    <shape android:shape="oval"> 
     <stroke android:color="@color/icon_primary_background" 
       android:width="2dp"/> 
     <solid android:color="@android:color/transparent" /> 
    </shape> 
</item> 
</layer-list> 

的ImageView有沒有什麼特別的:

<ImageView 
    android:id="@+id/arrow" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:layout_margin="16dp"/> 

當使用srcsetImageDrawable(int)指向層列表,center似乎被忽略(或至少這不是我希望的行爲):

Undesired behavior

我想下面顯示。這是可能的使用background(或setBackground(Drawable)),而不是src

Desired behavior

我堅持的原因是因爲setBackground(Drawable)限制爲API16 +,我寧願不限制,因爲這樣我的觀衆。

那麼,我錯過了什麼?

編輯:作爲@pskink指出下面,我失蹤setBackgroudDrawable(Drawable)。但是,這仍然是一個偶然的問題。我真的很想知道在這種情況下,srcbackground(以及相應的方法)的不同行爲背後的原因是什麼。

+1

在api16-是setBackgroudDrawable – pskink 2014-09-04 21:36:17

+0

@pskink謝謝。不知何故Studio即使在熱鍵輸入方法時也會在最後離開該方法。但是,你是否知道'src'和'background'之間不同行爲背後的原因?我的意思是,我想知道我錯過了什麼。 – davidcesarino 2014-09-04 21:45:31

+0

嗯,你的代碼工作正常圖標是在中心,小尺寸,經過測試的模擬器2.2 – pskink 2014-09-05 07:49:34

回答

0

似乎ImageView繪製在同一大小的兩個項目。您可以添加「填充」您繪製這樣的:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:top=「16dp」 android:left=「16dp」 android:right="16dp" android:bottom="16dp"> 
     <!-- This is a 24dp x 24dp PNG --> 
     <bitmap android:src="@drawable/ic_secondary_arrow" 
      android:gravity="center"/> 
    </item> 
    <item> 
     <shape android:shape="oval"> 
      <stroke android:color="@color/icon_primary_background" 
       android:width="2dp"/> 
      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 
</layer-list>