在一个Activity中是否有一种方法可以多次调用setContentView(id)
并使用不同的id
来呈现不同的视图,或者我一定要开启一个新的Activity?
在一个Activity中是否有一种方法可以多次调用setContentView(id)
并使用不同的id
来呈现不同的视图,或者我一定要开启一个新的Activity?
根据Austyn的评论,我找到了另一个帖子中有关如何使用ViewFlipper完成此操作的指导(请参阅标记为选定答案的顶部答案这里)。
如果您不想使用ViewFlipper,我在这里找到了一个很好的例子,说明如何在同一视图中切换布局:
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
)在不同视图之间切换。您可以在您的活动中尝试这个:
getWindow().addContentView(View, ViewGroup.LayoutParams);
这两个内容视图将会一个在另一个上面。但是,没有一种直接的方法可以移除以这种方式添加的某个视图。
还要注意,在最后一次调用之后调用 setContentView
将会移除所有先前添加的内容视图。
ViewFlipper
来完成这个任务,而不仅仅是改变每个View
的可见性。 - Austyn MahoneyViewFlipper
,它就非常简单,如果你没有使用,那么维护那个代码库就祝你好运了。 - Austyn Mahoney