是否可以针对同一活动中的不同案例设置两种不同的布局,或者是否必须使用intent
来调用另一种布局不同的activity
答案 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);
});