多次调用setContentView()

有一种方法可以在一个Activity中使用不同的ID多次调用setContentView(id)来渲染不同的视图,或者我绝对必须启动一个新的Activity吗?

根据Austyn的评论,我设法find了一些关于如何使用ViewFlipper在另一篇文章中完成这个指导的指导(请参阅这里的选中标记的最佳答案)。

如果你不想使用ViewFlipper,我find了一个很好的例子来说明如何在同一视图中的布局之间切换:

XML:

<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <ImageView android:src="@drawable/icon" android:scaleType="fitCenter" android:layout_height="fill_parent" android:layout_width="fill_parent"/> <TextView android:text="Learn-Android.com" android:textSize="24sp" android:textColor="#000000" android:layout_height="fill_parent" android:layout_width="fill_parent" android:gravity="center"/> </FrameLayout> 

码:

 private void SwitchLayout2() { RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1); RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2); // Enable Layout 2 and Disable Layout 1 Layout1 .setVisibility(View.GONE); Layout2.setVisibility(View.VISIBLE); } private void SwitchLayout1() { RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1); RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2); // Enable Layout 1 & Disable Layout2 Layout1.setVisibility(View.VISIBLE); Layout2.setVisibility(View.GONE); } 

不,你不能轻易多次调用它。 您可能需要完全删除所有视图,然后膨胀新的布局,或使用ViewFlipper (或FrameLayout )在不同视图之间切换。

在一个侧面说明,这个问题之前已经被问到,虽然我不能立即find它。

你可以从你的活动中尝试这个:

 getWindow().addContentView(View, ViewGroup.LayoutParams); 

这两个内容视图将是一个在另一个之上。 但是,没有直接的方法来删除这种方式添加的某个视图。

还要注意,在最后一次调用之后调用setContentView将删除所有以前添加的内容视图。