一次设置多个视图的属性
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);
例如,如果我有:
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);