android - 我怎么知道是否存在 inflatedView

标签 android layout-inflater

当我按下一个按钮时,我希望出现一个 inflatedView ,当我按下同一个按钮时,这个 View 消失...

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);

最佳答案

一遍又一遍地重新膨胀相同的 View 通常不是最好的方法。

只需向您的 Activity 添加一个指向您要隐藏的 View 的变量:

View myView;

在 onCreate 中,膨胀你的 View :

myView = LayoutInflater.from(getBaseContext()).inflate(R.layout.inflate_find, null);

现在,如果你想显示 View ,你可以像在现有代码中一样添加它:

ViewGroup parent = (ViewGroup) findViewById(R.id.inflate_place);
parent.add(myView);

可以这样删除:

If (myView.getParent()!=null){
   ((ViewGroup) myView.getParent()).removeView(myView);
}

切换 View 的可见性会像这样工作:

If (myView.getParent()!=null){
   ((ViewGroup) myView.getParent()).removeView(myView);
} else {
   ViewGroup parent = (ViewGroup) findViewById(R.id.inflate_place);
   parent.add(myView);
}

您可能想看看 View.setVisibility()。这通常用于显示和隐藏 View :http://developer.android.com/reference/android/view/View.html#setVisibility%28int%29

关于android - 我怎么知道是否存在 inflatedView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17887450/

相关文章:

android - 在膨胀的线性布局中单击 TextView

android - v24 AsyncLayoutInflater 在 ui 线程上膨胀

android - 集成 HalpStack 后生成签名的 APK 警告即将到来

android - ListView 是 Activity 的一部分,而不是 Activity 的一部分?

java - 从左到右的 Sprite 动画,我应该选择什么?动态的还是运动学的?

android - 在 Fragment Activity 中动态包含另一个布局

android - Google Map V2 android 错误 Inflating class fragment 错误

Android:使用 LayoutInflater 添加 View

android - Gradle 构建错误 : insufficient memory

android apk 非市场安装更新通知