1

我有一个片段,有两种视图模式,一个编辑模式和一个只读模式。用户可以通过在两种模式下都可用的微调器中选择的状态之间移动来切换模式。

创建片段时,我选择只读或编辑布局以根据我管理的对象的状态进行扩展。一旦用户选择了新的状态,模式就可以从只读模式切换到编辑模式。发生这种情况时,我需要用只读视图替换编辑视图。

如何替换片段中的现有视图?在 Activity 中,我会使用我想要使用的布局调用 setContentView。

我试过了:

  • 使视图无效,但不再调用 onCreateView。
  • 用片段事务替换片段,但不会改变布局。

注意:这是针对 Android 4.0 的,我不能使用兼容性库。

4

1 回答 1

1

如果您想将所有内容保存在一个片段中:

我不完全确定您的布局看起来如何,但我想我只是将两个布局都放入 aViewFlipper并根据选择的内容更改它的显示子项。

示例片段布局

<LinearLayout android:orientation="vertical" ..>
    <Spinner ../>

    <ViewFlipper android:id="@+id/flipper" ..>
        <ReadOnlyLayout />
        <EditLayout />
    </ViewFlipper>

</LinearLayout>

然后您可以简单地使用setDisplayedChild()在两种布局之间切换,具体取决于您拥有的状态。

ViewFlipper vf = (ViewFlipper) getView().findViewById(R.id.flipper);
vf.setDisplayedChild(1);

请注意,子索引从 0 开始。

也可以使用两个独立的片段(如 Barak 所建议的)。我想这只是一个设计选择。

于 2012-06-08T16:08:47.537 回答