对于API< 23而言,Android drawable似乎已拉伸,并且对于API 23及更高版本正确

时间:2017-08-15 03:34:33

标签: android xml android-5.0-lollipop drawable layer-list

我目前正在使用listview的列表选择器并使用layer-list创建它。这是我的xml代码:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/menu_arrow"
    android:width="18dp"
    android:height="36dp"
    android:top="5dp"/>

<item android:top="0dp" android:left="5dp" android:bottom="0dp" android:right="0dp">
    <shape android:shape="rectangle">
        <solid android:color="@android:color/transparent"/>
    </shape>
</item>

当我构建应用程序时,在api 23及更高版本上显示正常。

api 23

但对于api 22及以下,它看起来像这样:

api 22

我遇到过这篇文章Shape drawable in layer-list rendered incorrectly for APIs below 23,并了解到属性width和height仅适用于api 23及以上版本。所以我在尺寸标签内添加了宽度和高度,如下所示:

 <item android:drawable="@drawable/menu_arrow"
    android:top="5dp">
    <size android:height="36dp" android:width="18dp"/>
    </item>

但是图像仍然显得拉长。 api 22及以下需要什么属性才能使所有版本的可绘制外观均匀?

1 个答案:

答案 0 :(得分:0)

我设法通过以下方式解决它:

<item android:drawable ="@drawable/menu_arrow"
    android:right="285dp"
    android:top="5dp"
    android:bottom="10dp"/>

我想api&lt;我们需要使用top,right,bottom值来调整drawable的大小,并且对于api> 23我们可以使用宽度和高度。