写了一个微信通讯录ListView界面,想实现底端导航栏被点击时改变选中状态,需要在/drawable下定义selector来设置选中与未选中状态显示的图案效果

底端状态栏被选中改变图案状态

在我写出来之后效果却不尽人意,selector显示原图大小,导致图标过大不美观

底部图标过大不美观

解决方案有

①在xml布局中设置图案显示的width和height——————亲测无效。

② 在java代码中修改图片属性————————————太麻烦了。

③自行对图片资源加工缩放尺寸————————————太麻烦了。

本文方法在selector中使用<layer-list>标签这样就可以设置图片width、height属性

原写法如下,不作任何修改直接调用图片

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/found_yes" android:state_checked="true"/>
    <item android:drawable="@mipmap/found_no"/>
</selector>

改变写法的 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="true">
        <layer-list>
            <item android:drawable="@mipmap/found_yes" android:width="32dp" android:height="32dp"/>
        </layer-list>
    </item>
    <item>
        <layer-list>
            <item android:drawable="@mipmap/found_no" android:width="32dp" android:height="32dp"/>
        </layer-list>
    </item>
</selector>

 修改后的效果图美观多了

微信通讯录界面

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐