API 23 以下的自定义可绘制匹配父项中的位图
Bitmap in custom drawable matching parent below API 23
我有一个 ListView
,它的项目有一个指向末尾的箭头,如下所示:
箭头设置在后台,是自定义drawable:
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 > 22 这很好用,但 22 及以下的背景看起来像这样:
这是我设置背景的方式:
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
?
您可以像这样更改您的 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>
我试过你的例子,但做了一些小改动就成功了。
我没有将重力应用于 <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
Android API 19
无重力属性 Android API 19
希望对您有所帮助
我有一个 ListView
,它的项目有一个指向末尾的箭头,如下所示:
箭头设置在后台,是自定义drawable:
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 > 22 这很好用,但 22 及以下的背景看起来像这样:
这是我设置背景的方式:
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
?
您可以像这样更改您的 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>
我试过你的例子,但做了一些小改动就成功了。
我没有将重力应用于 <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
Android API 19
无重力属性 Android API 19
希望对您有所帮助