selector设置两个大小不一样的状态图
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/guide_dot_on" android:state_selected="true"/>
<item android:drawable="@mipmap/guide_dot_right"/>
</selector>
guide_dot_on.png 宽高:30x30
guide_dot_on.png
guide_dot_right.png 宽高:17x27
guide_dot_right.png
8.0系统会出现以下情况,切换的时候,图片显示大小和原来不一致的问题:
guide.gif
原因通过debug源码发现:
image.png
8.0系统每次切换,这个地方w和mDrawableWidth,h和mDrawableheight的值始终一样,导致没有执行requestLayout()方法
5.0系统以及之前则没有这个问题,引起解决办法是每次setSelected()之后,手动调用一次requestLayout()方法,便可解决问题
目前我手头三台8.0系统手机小米Mix2,华为,oppo R15均出现此问题, 6.0和7.0系统尚未测试
以上仅为个人测试结果,如果有误,欢迎提出问题,并进行文章修复
网友评论