代码之家  ›  专栏  ›  技术社区  ›  MyName

重置视图的背景色

  •  4
  • MyName  · 技术社区  · 15 年前

    我正在尝试恢复视图的背景色。

    View newSelection, previousSelection;
    
    ...
    
    if(previousSelection != null) {
        previousSelection.setBackgroundColor(Color.BLACK); // problem here
    }
    newSelection.setBackgroundColor(Color.YELLOW);
    

    但是,我想重置先前选定视图的颜色。但是,我不知道它是哪种颜色(我正在设置它)颜色。黑色在上述代码中)。我在视图类中找不到getBackgroundColor或类似的方法。如果我有它,我可以保存以前的颜色,当新视图被选中时再放回去。

    3 回复  |  直到 15 年前
        1
  •  6
  •   mmlc31    14 年前

    使用视图。 (),它返回视图的当前“可绘制”背景,然后可在视图中使用。 可退让 ()

    View theView;
    Drawable originalBackground;
    
    ...
    
    originalBackground = theView.getBackground();
    
    theView.setBackgroundColor(Color.YELLOW);
    
    ...
    theView.setBackgroundDrawable(originalBackground);
    
        2
  •  2
  •   Nathan Schwermann    15 年前
        3
  •  0
  •   capecrawler    15 年前

    可以尝试将上一个颜色设置为视图的标记。

    例如

    View newSelection, previousSelection;
    
    newSelection.setTag(Color.Green);
    previousSelection.setTag(Color.Black);
    
    if(previousSelection != null) {
        previousSelection.setBackgroundColor((int)previousSelection.getTag());
    }
    newSelection.setBackgroundColor(Color.YELLOW);