开发功能1时写了个控件,圆角白色背景,因此写了shape_bg_round.xml,代码如下:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="4dp"/> <stroke android:width="1dp" android:color="@color/blue_589dfc"/> <solid android:color="@android:color/white"/> </shape>
后来,开发功能2时,也用到该控件,但是要求控件不带背景色,显示页面的背景,回头看了下功能1用到该控件的地方,其实控件不需要设背景色,因为页面底色已经设置了白色,所以不多想就把solid的设置去掉了。
在测试机1(Nexus 5x)上检查效果,都没问题,显示正常。后来因为其他原因用了测试机2(小米1)来做适配,竟然发现该控件的背景色都是黑乎乎的,立即意识到问题所在了,马上把代码修改为:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="4dp"/> <stroke android:width="1dp" android:color="@color/blue_589dfc"/> <solid android:color="@android:color/transparent"/> </shape>
在两个手机上都正常了。
总结:如果shape等背景文件不需要带颜色,不能直接把solid的颜色去掉,而是设置为透明,不然会有适配问题,部分手机显示为黑色。
以前碰到过一次,这是第二次碰到了,所以记录下来。