有一种方法可以在一个活动期间使用不同的setContentView(id)
多次调用id
来呈现不同的视图,或者我是否必须开始新的活动?
答案 0 :(得分:10)
根据Austyn的评论,我确实设法找到了一些关于如何使用ViewFlipper在另一篇文章中完成此操作的指导(请参阅勾选的顶部答案here。)
如果您不想使用ViewFlipper,我找到了一个很好的示例,说明如何在同一视图中切换布局here:
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);
}
答案 1 :(得分:3)
不,你不能轻易多次调用它。您需要完全删除所有视图,然后对新布局进行充气,或使用ViewFlipper
(或FrameLayout
)在不同视图之间切换。
另一方面,这个问题之前已被问过,虽然我无法立即找到它。
答案 2 :(得分:0)
您可以在活动中尝试此操作:
getWindow().addContentView(View, ViewGroup.LayoutParams);
两个内容视图将是一个在另一个之上。但是,没有直接的方法来删除以这种方式添加的某个视图。
另请注意,在上次通话后拨打setContentView
,将删除所有以前添加的内容视图。