我正面临这个问题,解决方案可能只是一个简单问题,但我的尝试没有成功
我有一个父视图容器,其中包含三个子视图,它们声明了onClick事件处理程序并执行不同的操作
我想要做的是为每个状态添加statelist drawables,以便在不同的状态下,子视图的颜色会发生变化。
这是粗略的看法 -
Child View 3拥有自己的州名单并独立工作,我有我需要的东西 但是,我想要的是,当他们在点击时执行他们的独立操作时,当任一状态改变时,子视图1和2的状态应该同时改变。所以基本上,如果我按下(按下状态)子视图1可能会改变其颜色,同样也应该发生2,反之亦然。所有这些,子视图3应该不受影响 我尝试了多种方法来解决statelist drawables但没有成功。有人可以帮我解决这个问题吗? 我相信在Android中应该有一些优雅的方法来处理这个问题 谢谢!
答案 0 :(得分:0)
如何实现接口,有点:
OnStateChangeListener() {
onStateChanged(int color, int whatever);
}
对于两个相关的观点并互相倾听状态的变化。
答案 1 :(得分:0)
如果您将所有这些都直接引用到您的drawable中,则无法实现。
我相信还有其他方法,但第一眼就有三个:
您可以使用RadioGroup然后使用 RadioButton个实例
您可以创建自定义视图容器(例如,从LinearLayout
派生),然后在其中添加逻辑以处理来自其子视图的点击
您可以使用GreenRobot EventBus或任何其他公交车点击您点击的视图中的活动,其他任何视图都可以收听并更改自己的状态
答案 2 :(得分:0)
你可以创建一个这样的函数 -
public void setStates(View views[],int clickedViewID){
for(int i=0;i<views.length;i++){
if(views[i].getID==clickedViewID){
//change color
}
else{
// do whatever like chnage color.
views[i].
}
}
}
传递所有三个子视图和所点击视图的ID。
在这里,您可以检查三个视图的ID是否匹配,而不是更改其中的颜色,否则任何其他视图的颜色。