把Widget中的控件disable掉的方法

在Android项目中,为了实现Widget上的按钮控制效果,即点击一个按钮后其他按钮变灰不可用,开发者遇到了RemoteViews无法直接操作UI控件的问题。通过Google搜索找到解决方案:1) 利用RemoteViews切换按钮的可见性来模拟禁用状态;2) 通过Service或Activity处理点击事件,根据总开关状态决定是否执行点击操作。本文详细介绍了这两种方法的实现思路。
摘要由CSDN通过智能技术生成

项目需求是在Widget上面有5个按钮,就是类似与电源管理的Widget那样的五个按钮, 要的效果是类似android自带的某些效果:点击某个按钮的时候其他按钮变为不可用(也就是按钮的总开关), 还有三个按钮是一组,当他们可用的时候这一组按钮中只有一个是高亮显示的,其他的都灰掉。!

先做Widget在设置按钮点击事件的时候就知道BroadcastReceiver是无法直接操作UI控件的,但是AppWidget有个RemoteViews可以去设置Widget中的控件, 于是带着这个经验,到RemoteViews类中去找setEnable(),结果发现没有! 这条路行不通,于是google了下, 发现很多人也都有这个问题!  这条路走不通,不能说功能就不做了阿!

于是我想了两个解决方案:

1:两个按钮一组(Enable和Disable的为一组), 因为RemoteViews是可以设置控件的可见程度的, 当总开关为开的时候, 显示可用的按钮,隐藏不可用的,当总开关为关的时候隐藏可用的,显示不可用的!

2:点击按钮触发的Service或者Activity里面去判断要不要处理点击事件!(点击按钮时可以把总开关的状态随着Intent传过去,也可以在Activity/Service中读取数据库)


第一种方案的实现:

<Button android:id="@+id/startbutton"  
	android:text="Start"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值