一个活动的两种不同布局

时间:2012-10-25 07:45:27

标签: android android-layout

是否可以针对同一活动中的不同案例设置两种不同的布局,或者是否必须使用intent来调用另一种布局不同的activity

6 个答案:

答案 0 :(得分:29)

是的,可能。您可以为单个活动使用尽可能多的布局,但显然不能同时使用。你可以使用类似的东西:

if (Case_A)
  setContentView(R.layout.layout1);

else if (Case_B)
  setContentView(R.layout.layout2);

依旧......

答案 1 :(得分:11)

是的,这也适用于开关案例

我已经尝试过这段代码......

switch (condition) {
        case 1:  
    setContentView(R.layout.layout1);
                 break;
        case 2:  
    setContentView(R.layout.layout2);
                 break;
        case 3:  
    setContentView(R.layout.layout3);
                 break;

        default: 
    setContentView(R.layout.main);
                 break;
    }

答案 2 :(得分:3)

我建议使用Fragments

如果您可以解释更多内容以找到其他解决方案(如果您的片段不合适

)将会很有帮助

修改

使用android支持库来支持较低版本的操作系统

<强> EDIT2

如果你想使用两个xml,你可以将两个xml组合成一个并使用它

<include layout="@layout/YOURXMLNAME1" />
<include layout="@layout/YOURXMLNAME2" />

在许多情况下再次使用布局时这也很有用

答案 3 :(得分:2)

答案 4 :(得分:1)

以下是您ViewFlipper的最佳解决方案 ViewFlipper是一个简单的ViewAnimator,它将在两个或多个已添加到其中的视图之间进行动画处理。一次只能展示一个孩子。如果需要,可以定期在每个孩子之间自动翻转。 Here是viewflipper的好例子 您还可以查看this 编辑: - One StackoverFlow answer for you

答案 5 :(得分:1)

有很多方法可以解决这个问题。其他答案包括至少两种方法 - 根据案例使用setContentView并使用片段。还有一个我想谈谈。比如说,你包括两个布局

<include
android:id = "@+id/layout1"
layout = .../>

<include
android:id = "@+id/layout2"
layout = ...
android:visibility = "gone"/>

在您的Java代码中,您可以根据用例隐藏或显示您的布局。例如,设置内容视图以显示上面的布局显示layout1。当用户单击下一个按钮时,您可以获得对layout1的引用,并将其可见性设置为已消失,并将layout2的可见性设置为可见。

LinearLayout layout1 = findViewById(R.id.layout1);
LinearLayout layout2 = findViewById(R.id.layout2);

buttonNext.setOnClickListener(new View.OnClickListener()
{ 
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
});