Android layer-list 使用,并设置item的size(大小)

现在我们正在做一个简单的聊天功能,那必然我们会对每一句的聊天内容设计一个聊天气泡作为背景,设计稿如下:
在这里插入图片描述
基于设计稿,很自然的我们会想到直接问UX要.9图,但是我们公司由UX部门不再同一个办公楼,本想让UX提供,沟通下来换来的是UX说已经提供了可以下载。但找来找去只发现设计稿提供了气泡的Tail。本来.9应该拿过来就可以用,但目前只提供Tail,不过也可以通过自己画的方式实现,接下来就是想到用android的layer-list机制,对资源tail和shape进行叠加绘制,一样能达到效果:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:right="6dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/primary" />
            <corners android:radius="@dimen/shape_chat_radius" />
        </shape>
    </item>
    <item
        android:drawable="@drawable/ic_bubble_right_tail"
        android:left="@dimen/shape_chat_radius"
        android:top="@dimen/shape_chat_radius" />
</layer-list>

一运行,效果图如下:
在这里插入图片描述
从上图中明显可以发现,Tail非常短,而且随着文字越多,Tail 越短,长文字几乎Tail直接不可见了,好家伙!
看起来像是Tail随着文字的长度被拉伸没了,于是又想到,资源Tail.svg应该保持原有宽高大小,然后给<item 标签设置了android:width 和android:height属性,但android studio编译器提示了,width和height只在API 23 之后才支持,这…难道这个小小东西我要通过java代码的方式自定义view来实现?我不想这么干,于是google搜索框里敲了关键字 “android layer-list item size”,

虽然没有找到能直接解决的方案,但有一片文章
https://stackoverflow.com/questions/10706853/android-how-to-change-item-width-and-height 第3个回答这段话给我了一点启示:
The above solution takes advantage of having a sized (with a transparent ) and an unsized one (with a ) that has android:gravity set to left|top|right|bottom for matching both parent’s dimensions. So, the real size of the will be determined by that of the unique sized in the same parent.
依旧是上面的代码,我给<item加上了android:gravity="end|right|bottom"完美,效果如下:

在这里插入图片描述

您可以使用layer-list来创建带有背景图片和圆角的图层。以下是一种实现方法: 1. 创建一个drawable文件,例如"custom_background.xml"。 2. 在"custom_background.xml"文件中,使用layer-list标签来定义图层列表。 3. 在layer-list标签中,添加一个item标签来指定每个图层的属性。 4. 在item标签中,使用shape标签来定义背景形状。 5. 在shape标签中,使用corners标签来设置圆角。 6. 在shape标签中,使用solid标签来设置背景颜色。 7. 在shape标签中,使用gradient标签来设置渐变背景。 8. 在shape标签中,使用stroke标签来设置边框。 9. 在shape标签中,使用size标签来设置图层大小。 10. 在shape标签中,使用padding标签来设置内边距。 11. 在item标签中,使用bitmap标签来指定背景图片。 以下是一个示例的"custom_background.xml"文件: ```xml <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <corners android:radius="10dp" /> <solid android:color="#FF0000" /> </shape> </item> <item android:drawable="@drawable/your_image" /> </layer-list> ``` 请将上述代码中的`@drawable/your_image`替换为您想要设置为背景图片的资源文件。 然后,您可以将该drawable文件作为布局文件或视图的背景,例如: ```xml <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/custom_background" ... > ... </LinearLayout> ``` 这样就可以在layer-list设置背景图片和圆角了。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值