重新定义Viewstub

时间:2011-05-05 13:33:10

标签: android containers inflate viewstub

我有一个问题。

我使用2个ViewStub将屏幕滑入两个区域。

但如果我对ViewStubs进行了充气,​​那么他们就无法访问了,而且我无法在这个ViewStub中膨胀其他视图。

那么使用这些容器的替代方法是什么。

这里有一些代码。你们都喜欢Code:

    ViewStub contentSpace = (ViewStub) findViewById(R.id.ContentSpace);       
    contentSpace.setLayoutResource(R.layout.view1);
    contentSpace.inflate();
    contentSpace.setInflatedId(R.id.Content);
    RelativeLayout content = (RelativeLayout) findViewById(R.id.Content);

    contentSpace.setLayoutResource(R.layout.view1); //crash
    contentSpace.inflate();

2 个答案:

答案 0 :(得分:2)

似乎ViewStub无法重新充气。它被设计为仅膨胀一次,然后从View层次结构中删除。更多详情:https://stackoverflow.com/a/11579271/752781

答案 1 :(得分:0)

这是我的解决方案

rootLayout是ViewStubs所在的线性布局。

    rootLayout.removeView(contentLayout);
    inflater.inflate(R.id.view1, rootLayout);
    contentLayout = findViewById(R.id.contentLayout);

厂景:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"    
        android:id="@+id/contentLayout">
[...]