对于API <23的Android,可绘制对象似乎被拉伸,而对于API 23及以上的Android则正确显示。

3

我目前在使用一个列表选择器来创建我的列表视图,它是使用层列表(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 22及以下版本,它看起来像这样:
我遇到了这篇文章 Shape drawable in layer-list rendered incorrectly for APIs below 23,并了解到属性宽度和高度仅适用于api 23及以上。因此,我将宽度和高度添加到size标记中,如下所示:
 <item android:drawable="@drawable/menu_arrow"
    android:top="5dp">
    <size android:height="36dp" android:width="18dp"/>
    </item>

但是图像仍然显得拉伸。在API 22及以下版本中,需要哪个属性才能使所有版本的绘图对象看起来均匀?


你可以创建drawable、drawable-v21和drawable-v23,并为每种类型进行编辑。 - Nguyễn Trung Hiếu
请参考以下链接以获取有关在Android中使用Layer List时项目大小的信息:https://dev59.com/z5Pfa4cB1Zd3GeqPEYmR#38608066 - Nguyễn Trung Hiếu
我已经拥有每种类型的XML文件,API 22的代码在v21文件夹中。 - nexus
你能上传 item_view.xml 文件吗? - Nguyễn Trung Hiếu
尝试将android:layout_width="wrap_content"设置为listview的item_view。 - Nguyễn Trung Hiếu
1个回答

0
我用以下方式成功解决了它:
<item android:drawable ="@drawable/menu_arrow"
    android:right="285dp"
    android:top="5dp"
    android:bottom="10dp"/>

我猜对于 API < 23,我们需要使用顶部、右侧、底部值来调整可绘制对象的大小,而对于 API > 23,我们可以使用宽度和高度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接