您的位置:首页 > 移动开发 > Android开发

android中的CheckBox改变背景图片后图片显示大小不正确的问题

2016-04-20 11:44 861 查看
今天在工作中遇到一个需求:点击按钮后改变页面中相关显示并改变点击按钮的背景图片显示,最后决定用checkbox来实现,这个时候就需要写一个选择器放两张图片,分别设置为选中时的状态和未选中的状态,

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


这个选择器是没什么技术含量的,也没什么可说的,关键到了后面给控件设置属性的时候,由于是第一次使用checkbox做相关的操作,很自然的想到了给他的background设置上面写的选择器,结果问题开始了,图片是有了,可是背后的那个黑色选框也还在,当时觉得没什么,应该好解决(事实上也是这样的),很自然的在网上搜了一下方法,当时看到的解决方案是这样的

android:button="@drawable/ic_selector_traffic"


这种情况时,把宽高设置成自适应还没什么,但是一旦需要固定大小,背景图片根本不按你想象中的大小来,完全按照图片的原始尺寸来展示,这样的话对后期各种屏幕适配有很大的问题

找了半天网上的解决方案,大部分都是给checkbox设置一个style,然后style里面也是上面那句代码,试过以后没有一点点卵用,最后实在没办法我心想要不就让UI给我改小一点图片算了,以后有问题了再说…

但是想了半天还是放弃了,盯着屏幕看了半天,发现这个checkbox的边框还是方方正正的,而不是像背景图片一样有一点圆角,于是尝试又把代码改成这样:

android:background="@null"
android:button="@drawable/ic_selector_traffic"


然而还是没什么卵用~~~

以上是背景

就在我快要奔溃的时候,突然灵机一动,是不是两条属性的值可以换一换:

android:background="@drawable/ic_selector_traffic"
android:button="@null"


成了…

可能对于大神们来说这并没什么,呵呵一笑,嗤之以鼻

但是也许还有很多没用过的人会有类似的需求,因为我在网上找的时候看见也有许多人也在问这个问题,但是答案大多错误或者代码复杂至极,甚至还有看见说让重写checkbox控件的,还有说在代码里计算宽高再压缩图片然后显示的,我去…

贴出来,给需要的人

转载无需注明出处,就这么任性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: