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

Asa*_*evo 7 xml android 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>
Run Code Online (Sandbox Code Playgroud)

创建这个形状:

背景矩形

这个箭头形状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>
Run Code Online (Sandbox Code Playgroud)

创建这个形状:

顶层三角形

我正在使用这个可绘制的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>
Run Code Online (Sandbox Code Playgroud)

但我希望最终图像看起来像这样:

最终形象

我不知道如何将箭头的重力(第二项和顶层)设置为居中|我已尝试使用bitmap标签,但它只接受图像文件.

我需要这是一个XML drawable因为

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

mar*_*mor 9

在内部使用内部Bitmapdrawable item,并gravity为其设置:

<item android:drawable="@drawable/tab_background_unselected">
</item>
<item>
    <bitmap
        android:gravity="bottom|center_horizontal"
        android:src="@drawable/tab_selected_arrow" />
</item>
Run Code Online (Sandbox Code Playgroud)

  • Asaf说他尝试使用Bitmap drawables,他是正确的:他们不允许XML drawables(我刚刚更正了问题,现在"我尝试过使用......"中的"bitmap"标签出现了) (2认同)
  • 应该更加突出:此答案仅在“tab_selected_arrow”是 .png 时有效!!! (2认同)