Android 自定义checkbox后显示不完全的问题

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

<code class="hljs xml has-numbering"><span class="hljs-pi"><?xml version="1.0" encoding="utf-8"?></span>
<span class="hljs-tag"><<span class="hljs-title">selector</span> <span class="hljs-attribute">xmlns:android</span>=<span class="hljs-value">"http://schemas.android.com/apk/res/android"</span> ></span>
    <span class="hljs-tag"><<span class="hljs-title">item</span> <span class="hljs-attribute">android:drawable</span>=<span class="hljs-value">"@drawable/cb_traffic_no"</span> <span class="hljs-attribute">android:state_checked</span>=<span class="hljs-value">"false"</span>/></span>
    <span class="hljs-tag"><<span class="hljs-title">item</span> <span class="hljs-attribute">android:drawable</span>=<span class="hljs-value">"@drawable/cb_traffic_is"</span> <span class="hljs-attribute">android:state_checked</span>=<span class="hljs-value">"true"</span>/></span>
<span class="hljs-tag"></<span class="hljs-title">selector</span>></span></code>

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

<code class="hljs perl has-numbering"> android:button=<span class="hljs-string">"<span class="hljs-variable">@drawable</span>/ic_selector_traffic"</span></code>

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

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

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

<code class="hljs perl has-numbering">android:background=<span class="hljs-string">"<span class="hljs-variable">@null</span>"</span>
android:button=<span class="hljs-string">"<span class="hljs-variable">@drawable</span>/ic_selector_traffic"</span></code>

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


以上是背景

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

<code class="hljs perl has-numbering"> android:background=<span class="hljs-string">"<span class="hljs-variable">@drawable</span>/ic_selector_traffic"</span>
 android:button=<span class="hljs-string">"<span class="hljs-variable">@null</span>"</span></code>

成了…


可能对于大神们来说这并没什么,呵呵一笑,嗤之以鼻
但是也许还有很多没用过的人会有类似的需求,因为我在网上找的时候看见也有许多人也在问这个问题,但是答案大多错误或者代码复杂至极,甚至还有看见说让重写checkbox控件的,还有说在代码里计算宽高再压缩图片然后显示的,我去…
贴出来,给需要的人

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值