一次设置多个视图的属性

Set properties of multiple views at once

例如,如果我有:

EditText A;
TextView B;
ImageView C;

我想将他们所有的可见性设置为 View.GONE,我该怎么做而不是这样:

A.setVisibility(View.GONE);
B.setVisibility(View.GONE);
C.setVisibility(View.GONE);

我这样做:

groupD.setVisibility(View.GONE);

而不必将它们全部放在一个 RelativeLayout 中,然后将 RelativeLayout 设置为 View.GONE?这个有 Java class 吗?或者我必须为它买一个图书馆吗?

如果没有,我是否可以手动完成,以便我可以组织我的有 30 个视图的项目?我不想将每个组都设置为自己的 RelativeLayout,因为所有视图都相互依赖。

使用 ButterKnife 你可以:

@BindViews({ R.id.A, R.id.B, R.id.C })
List<View> views;

ButterKnife.apply(views, VISIBLE);
ButterKnife.apply(views, GONE);

//Action and Setter interfaces allow specifying simple behavior.

static final ButterKnife.Action<View> VISIBLE = new ButterKnife.Action<View>() {
  @Override public void apply(View view, int index) {
    view.setVisibility(View.VISIBLE);
  }
};
static final ButterKnife.Action<View> GONE = new ButterKnife.Action<View>() {
  @Override public void set(View view, int index) {
    view.setVisibility(View.GONE);
  }
};

改编自网站的示例

最好的方法是将视图传递给单个方法。它们都是视图,所以你可以这样做。

public void setViews(View view){
    view.setVisibility(View.GONE);
}

并像这样调用方法:

setViews(editText);