Android layer-list 利用,并设置item的size(巨细)

计算机软件开发 2024-9-13 07:40:59 107 0 来自 中国
如今我们正在做一个简朴的谈天功能,那一定我们会对每一句的谈天内容计划一个谈天气泡作为配景,计划稿如下:

基于计划稿,很自然的我们会想到直接问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>一运行,效果图如下:

2.png 从上图中显着可以发现,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 <item> (with a transparent <shape>) and an unsized one (with a <bitmap>) that has android:gravity set to left|top|right|bottom for matching both parent's dimensions. So, the real size of the <bitmap> will be determined by that of the unique sized <item> in the same parent.
仍然是上面的代码,我给<item加上了android:gravity="end|right|bottom"完满,效果如下:

3.png
-----------------------------End-----------------------------
我也是有底线的,感谢您的耐烦阅读,欢迎支持与点赞。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 21:27, Processed in 0.180886 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表