我做了一个viewstub
,它被夸大并再次创建了很多次。它使用的布局包括一个“删除”按钮,用于隐藏视图存储(或缩小它)。
当我创建新的viewstub
时,我会调用此代码:
ViewStub eventStub = new ViewStub(this);
eventStub.setLayoutResource(R.layout.event_container);
eventContainerMain.addView(eventStub);
eventStub.inflate();
问题是,在viewstub
布局中,删除按钮是使用新的viewstub
创建的。那么如何让删除按钮隐藏里面的viewstub
呢?
最重要的是,如何让其他方法影响仅查看其内部?
答案 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?