当我按下按钮时,我想要显示一个膨胀视图,当我按下相同的按钮时,该视图会消失......
ViewGroup parent = (ViewGroup) findViewById(R.id.inflate_place);
View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.inflate_find, null);
for(int i=0; i<parent.getChildCount(); ++i) {
View nextChild = parent.getChildAt(i);
// Here i want that if is the same layout, this disappear
if (nextChild.equals(view)) {
parent.removeView(nextChild);
return;
}
}
parent.addView(view);
答案 0 :(得分:2)
反复对同一视图进行一次又一次的充气并不是最好的方法。
只需在Activity中添加一个指向要隐藏的视图的变量:
View myView;
在onCreate中,夸大你的观点:
myView = LayoutInflater.from(getBaseContext()).inflate(R.layout.inflate_find, null);
现在,如果您想要显示视图,可以像在现有代码中一样添加它:
ViewGroup parent = (ViewGroup) findViewById(R.id.inflate_place);
parent.add(myView);
可以这样做:
If (myView.getParent()!=null){
((ViewGroup) myView.getParent()).removeView(myView);
}
切换视图的可见性就像这样:
If (myView.getParent()!=null){
((ViewGroup) myView.getParent()).removeView(myView);
} else {
ViewGroup parent = (ViewGroup) findViewById(R.id.inflate_place);
parent.add(myView);
}
您可能希望查看View.setVisibility()。这是通常用于显示和隐藏视图的内容:http://developer.android.com/reference/android/view/View.html#setVisibility%28int%29
答案 1 :(得分:1)
如果子项存在与否,您可以从ViewGroup indexOfChild(View视图)方法中检查。它返回一个表示组中视图位置的正整数,如果组中不存在该视图则返回-1
ViewGroup rootLayout = (ViewGroup) getWindow().peekDecorView();
LayoutInflater li = LayoutInflater.from(this);
View myView= li.inflate(R.layout.recorder, null);
if(rootLayout.indexOfChild(myView) == -1)
rootLayout.addView(myView);