首页 > 解决方案 > 单个活动或多个活动中的多个布局?

问题描述

我对布局和活动有疑问,主要关注的是应用程序的效率。我的问题是

在单个活动(如单个主活动)中使用多个布局 XML 文件是否简单高效,只需更改不同 XML 文件的视图内容,例如:使用处理程序在单个活动上登录和注册布局文件

或者

不同的活动,例如登录页面和注册页面,有单独的活动和相应的布局文件。

就效率和易用性而言,哪个是最佳实践?还请列出这些方法的优缺点?以及使用这些方法中的任何一种的情况?

谢谢你 。

标签: androidandroid-activitylayout

解决方案


方法 - 1:

请参阅android.widget.ViewFlipper的完整示例。使用它,您可以从 xml 创建不同的布局,然后使用以下简单方法在它们之间切换:

ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.myViewFlipper);


  // or you can switch selecting the layout that you want to display
  viewFlipper.setDisplayedChild(1);
  viewFlipper.setDisplayedChild(viewFlipper.indexOfChild(findViewById(R.id.secondLayout)

具有两种布局的XML示例:

      <ViewFlipper
            android:id="@+id/myViewFlipper"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <LinearLayout
                android:id="@+id/firstLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >
               [...]
            </LinearLayout>



            <LinearLayout
                android:id="@+id/thirdLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >
              [...]
            </LinearLayout>
      </ViewFlipper>

方法 - 2:

将小部件添加ViewSwitcher到您的 xml 布局文件。添加**ViewSwitcher**2 个新布局

viewSwitcher =   (ViewSwitcher)findViewById(R.id.viewSwitcher1);
        myFirstView= findViewById(R.id.view1);
        mySecondView = findViewById(R.id.view2);
        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if (viewSwitcher.getCurrentView() != myFirstView){

                    viewSwitcher.showPrevious(); 
                } else if (viewSwitcher.getCurrentView() != mySecondView){

                    viewSwitcher.showNext();
                }
            }
        });

具有两种布局的 XML 示例:

<ViewSwitcher
        android:id="@+id/viewSwitcher1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:inAnimation="@android:anim/slide_in_left" >

        <LinearLayout
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/text"
            android:text="This is simplezdscsdc text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            </TextView>

        </LinearLayout>


    <LinearLayout
        android:id="@+id/view2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/text"
            android:text="This issdsdsds simplezdscsdc text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            </TextView>

        </LinearLayout>
    </ViewSwitcher>

注意:- ViewFlipper 最适合单个活动中的多个布局。


推荐阅读