layer-list 使用遇到的item平铺的问题

@(Alu)
昨天在给Activity添加 theme的时候,修改themebackground遇到问题。
themebackground需要一个drawable下的 xml格式的文件来添加。
然后想在 drawable里去放置图标在某个位置的时候,我们需要用到layer-list这个标签,在他的item 标签里去添加一个src =@drawable属性,或者也可以在item标签里直接添加一个bitmap标签。如下所示:






    





这两种方式都是可行的,但是如果我们想让图片平铺也就是占满每一个不同的android手机的屏幕底部,应该怎样做?
对于 item 标签是没有提供譬如 android:layout_width="match_parent" 这种属性的,但是却提供了android:width="0dp",当然也有height,也就是高度,但在这里有两个问题,一是这里的 widthheight 属性无法设置match_parent,只能设置定长,当然我们也可以给他设置一个特别大的长度,让他占满屏幕,但是一点也不优雅我觉得另一点呢,是这两个属性吧,他不向下兼容,也就说在低版本手机上,他不生效,看到这里,我有些懵逼,但是不急。
其实item标签还有另外一种属性:
android:right="0dp" android:left="0dp" android:bottom="0dp"
这属性是什么意思呢,它代表margin也就是距离父布局的距离,它神奇的地方在于可以拉伸或压缩图片,就比如你的图片宽度只有10dp,当你设置right=0dpleft=0dp的时候,就相当于你设置了match_parent一样。现在的代码是这样的:

 






目的好像达到了,但是测试过程中发现,在6.0以下的设备,drawable 会被拉伸到占满整个屏幕,查看文档发现:

API.png

意思是drawable会根据内部的bitmap 元素来缩放贴合,如果不想让它缩放,那就给bitmap设置一个权重,到这里问题基本解决了,对于6.0以上的设备,drawable里的权重值也会影响不让他缩放问题,但从兼容性考虑这种方式放弃掉,改用添加子标签bitmap方式:





    


至此,问题解决。

你可能感兴趣的:(layer-list 使用遇到的item平铺的问题)