Android:如何根据其他

时间:2015-07-02 01:58:17

标签: android android-layout statelistdrawable

我正面临这个问题,解决方案可能只是一个简单问题,但我的尝试没有成功 我有一个父视图容器,其中包含三个子视图,它们声明了onClick事件处理程序并执行不同的操作 我想要做的是为每个状态添加statelist drawables,以便在不同的状态下,子视图的颜色会发生变化。
这是粗略的看法 -
enter image description here

Child View 3拥有自己的州名单并独立工作,我有我需要的东西 但是,我想要的是,当他们在点击时执行他们的独立操作时,当任一状态改变时,子视图1和2的状态应该同时改变。所以基本上,如果我按下(按下状态)子视图1可能会改变其颜色,同样也应该发生2,反之亦然。所有这些,子视图3应该不受影响 我尝试了多种方法来解决statelist drawables但没有成功。有人可以帮我解决这个问题吗? 我相信在Android中应该有一些优雅的方法来处理这个问题 谢谢!

3 个答案:

答案 0 :(得分:0)

如何实现接口,有点:

OnStateChangeListener() {
    onStateChanged(int color, int whatever);
}

对于两个相关的观点并互相倾听状态的变化。

答案 1 :(得分:0)

如果您将所有这些都直接引用到您的drawable中,则无法实现。

我相信还有其他方法,但第一眼就有三个:

  1. 您可以使用RadioGroup然后使用 RadioButton个实例

    • 这将需要默认的RadioButton样式更改
  2. 您可以创建自定义视图容器(例如,从LinearLayout派生),然后在其中添加逻辑以处理来自其子视图的点击

    • 使用RadioGroup来源作为Google的参考方式
  3. 您可以使用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是否匹配,而不是更改其中的颜色,否则任何其他视图的颜色。