创建新视图时动态隐藏视图存根

时间:2013-05-21 21:14:39

标签: android view stub viewgroup

我做了一个viewstub,它被夸大并再次创建了很多次。它使用的布局包括一个“删除”按钮,用于隐藏视图存储(或缩小它)。

当我创建新的viewstub时,我会调用此代码:

ViewStub eventStub = new ViewStub(this);
            eventStub.setLayoutResource(R.layout.event_container);
            eventContainerMain.addView(eventStub);
            eventStub.inflate();

问题是,在viewstub布局中,删除按钮是使用新的viewstub创建的。那么如何让删除按钮隐藏里面的viewstub呢?

最重要的是,如何让其他方法影响仅查看其内部

2 个答案:

答案 0 :(得分:4)

您还没有正确使用视图存根...

首先,使用以下内容将视图指向您想要复制的视图所需的布局:

ViewStub stub = new ViewStub(this);
    stub.setLayoutResource(R.layout.viewStubLayout);
    stub.inflate();

接下来,进入您的XML并确保布局上的按钮使用正确的方法android:onClick选项,该方法在您的类中声明。

要删除视图存根,您实际上并不删除它们......您应该使用.setVisibility(GONE).setVisibility(VISIBLE)来管理用户是否可以看到它。这将用于onClick所针对的方法。此外,在引用您的对象所在的视图存根时使用“this”将允许您管理用户单击的指定视图中发生的情况。

答案 1 :(得分:0)

您不会以希望删除视图存根的方式删除视图存根。当膨胀时,ViewStubs只是从父节点消失并被View对象替换。如果要在创建的视图上使用方法,可以使用ViewStub xml文件中的android:inflatedId属性。

你说你正在使用的布局有一个“删除”按钮“缩小”ViewStub,但实际上发生的事情是你正在删除{{1}时膨胀时创建的视图1}}。一旦ViewStub被夸大,它将自动从父母中删除,因此在通货膨胀后,将不存在要删除的ViewStub

您想要的是动态删除由膨胀的ViewStub创建的Viewstub。为此,我建议查看Add and Remove Views in Android Dynamically?