Android XML图层列表:如何定位顶层

时间:2013-10-14 09:46:16

标签: android xml layer-list

我有这个XML drawable - tab_background_unselected:

<?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 drawable - 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>

创建此形状:

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 drawable,因为

  1. 我需要它在一个可绘制的选择器里面
  2. 我不想让它成为PNG并为每个屏幕分辨率创建不同的文件

1 个答案:

答案 0 :(得分:9)

Bitmap内使用内部item drawable,并为其设置gravity

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