2013-10-14 72 views
7

我有這樣的XML繪製的位置 - tab_background_unselected:Android的XML層列表:如何頂層

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

    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/background_grey" />    
     </shape> 
    </item> 

</layer-list> 

它創建這種形狀:

background rectangle

這個箭頭形狀XML繪製 - tab_selected_arrow:

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

    <item> 
     <rotate 
      android:fromDegrees="45" 
      android:pivotX="-40%" 
      android:pivotY="87%" 
      android:toDegrees="45" > 
      <shape android:shape="rectangle" > 
       <solid android:color="@color/background_dark_green" /> 
      </shape> 
     </rotate> 
    </item> 

</layer-list> 

which creat ES這種形狀:

top layer triangle

爲了我使用這個可繪製XML(而不是PNG文件)來創建圖層列表:

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

    <item android:drawable="@drawable/tab_background_unselected"> 
    </item> 
    <item android:drawable="@drawable/tab_selected_arrow"> 
    </item> 

</layer-list> 

,但我想最終的圖像看起來像這樣:

final image

我不知道如何將箭頭的比重(第二項和頂層)設爲分呃|底部... 我試過使用bitmap標籤,但它只接受圖像文件。

我需要這是一個XML繪製因爲

  1. 我需要它是一個繪製選擇內部
  2. 我不想讓一個PNG和每個屏幕分辨率
  3. 創建不同的文件

回答

9

使用內部Bitmap繪製的item內,並設置gravity它:

<item android:drawable="@drawable/tab_background_unselected"> 
</item> 
<item> 
    <bitmap 
     android:gravity="bottom|center_horizontal" 
     android:src="@drawable/tab_selected_arrow" /> 
</item> 
+2

Asaf說他嘗試了Bitmap drawables,他是正確的:他們不允許使用XML drawables(我剛糾正了這個問題,現在「I've tried using ...」中的「bitmap」標籤出現了) –

+0

AFAIK沒有辦法,API 21-22中有一個bug,在這裏沒有位圖元素vectros :( – djdance

+0

應該更強調: 這個答案只適用於「tab_selected_arrow」是一個.png !!! – superuser