Spinner控件的坑

设置spinner背景的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/img_dropdown_bg_normal" android:state_window_focused="true"  />
<item android:drawable="@drawable/img_dropdown_bg_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/img_dropdown_bg_normal" android:state_pressed="false"/>
</selector>
该问题的必要条件:
1,在同一个界面上显示3个Spinner控件
2,3个控件的实现组件是DialogFragment
3,Spinner相关代码已经写好
出现的问题是:
点击任意一个Spinner控件,其他两个控件要么不动,要么一起联动(背景跟着改变)

如果是一个Spinner控件显示就完全可以有正常的用户体验。
解决办法:
用了昨天一天的时间来解决这个问题,已开始觉得自己刚研究这个控件有很多东西没有注意到,怀疑是自己那个地方没有细节处理下,用了好多尝试。
1,检查代码,下拉框相关代码提取出来新建一个项目,仔细检查之后发现没有逻辑上的错误;
2,在源代码添加监听器,并把selector元素给删除掉,监听控件的触摸事件,结果是新加的监听器和Spinner控件2个相关监听器可能有冲突,设置了之后不起作用,不能执行新加的监听器代码。
3,心冷之后,打算改用popwindow,于是另建一个项目测试多个Spinner控件的效果,用的selector元素作为背景,可惜结果还是和Spinner一样,验证了还是Spinner控件有问题,继续研究Spinner。
4,上网搜了很多资料发现有的文章指向了selector元素,于是打印Spinner控件是否聚焦,发现 window_focused的作用,明白了下拉框弹出下拉列表的原理其实是相当于弹出了一个窗口,这时候DialogF
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值