API 23下面的自定义可绘制匹配父级中的位图

时间:2016-08-26 08:29:53

标签: android android-layout android-drawable

我有ListView,其项目的箭头与末尾对齐,如下所示:

enter image description here

箭头在背景中设置,这是一个自定义绘图:

background_listitem.xml

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

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

    <item
        android:width="24dp"
        android:height="24dp"
        android:gravity="right|end|center_vertical"
        android:right="@dimen/preferred_margin">
        <bitmap android:src="@drawable/ic_chevron_right_black_24dp" />
    </item>

</layer-list>

使用 API&gt; 22 这项工作很有效但22岁以下的背景看起来像这样:

enter image description here

这就是我设置背景的方式:

listitem_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/listitem_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background_listitem"
    android:foreground="?attr/selectableItemBackgroundBorderless"
    android:padding="@dimen/preferred_margin">

    ...

</RelativeLayout>

有没有办法解决这个没有将箭头添加为ImageView

2 个答案:

答案 0 :(得分:1)

您可以像这样更改background_listitem.xml文件,我希望这对您有帮助。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/white"/>

    <item>
        <bitmap android:src="@drawable/ic_chevron_right_black_24dp"
            android:gravity="right|end|center_vertical" />
    </item>

</layer-list>

答案 1 :(得分:1)

我尝试了你的例子,但做了一些小改动,它起作用了。
我没有将重力应用于<item>标签,而是将标签应用于位图,结果对我来说很清楚。 我的xml代码如下:

<item>
    <shape>
        <solid android:color="@android:color/white" />
    </shape>
</item>
<item >
    <bitmap
        android:src="@drawable/ic_launcher" android:gravity="center|right"/>
</item>

在我的布局中,我将它们应用于父RelativeLayout,如下所示:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@drawable/my_background"
    android:layout_height="match_parent">

以下是我的结果:
Android API 23
enter image description here

Android API 19
enter image description here

Android API 19中没有重力属性
enter image description here

希望这有助于你