多次调用setContentView()

Chr*_*ian 12 android

有没有办法在一个Activity中使用不同的id多次调用setContentView(id)来呈现不同的视图,或者我是否必须开始一个新的Activity?

Jef*_*rod 10

根据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>
Run Code Online (Sandbox Code Playgroud)

码:

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);
}
Run Code Online (Sandbox Code Playgroud)

  • 您应该使用`ViewFlipper`来执行此操作,而不仅仅是更改每个`View`的可见性 (4认同)