一次设置多个视图的属性

时间:2016-07-07 13:01:38

标签: java android android-view

例如,如果我有:

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类?或者我必须为它获得一个库?

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

2 个答案:

答案 0 :(得分:3)

使用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);
  }
};

改编自网站的例子

答案 1 :(得分:0)

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

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

并调用这样的方法:

setViews(editText);