多次调用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
将删除所有以前添加的内容视图。