一项活动的两种不同布局
Posted
技术标签:
【中文标题】一项活动的两种不同布局【英文标题】:two different layouts for one activity 【发布时间】:2012-10-25 07:45:26 【问题描述】:是否可以在同一个活动中针对不同情况使用两种不同的布局,或者我必须使用intent
来调用另一个具有不同布局的activity
【问题讨论】:
@Ankush 可以,但是太长了,针对不同 UI 的不同活动是最好的解决方案。 【参考方案1】:是的,这是可能的。您可以为单个活动使用尽可能多的布局,但显然不能同时使用。你可以使用类似的东西:
if (Case_A)
setContentView(R.layout.layout1);
else if (Case_B)
setContentView(R.layout.layout2);
等等……
【讨论】:
如果我有一个数组适配器正在填充默认布局的布局,那将如何工作? 你应该使用片段而不是为不同的情况设置不同的布局。【参考方案2】:是的,这也可以通过 switch case 实现
我已经尝试过这段代码......
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;
【讨论】:
【参考方案3】:我建议使用Fragments
如果您对片段不满意,如果您能解释更多以找到其他解决方案,这将很有帮助
编辑
使用 android 支持库来支持较低的操作系统版本
编辑2
如果你想使用两个xml,你可以将两个xml合二为一并使用它
<include layout="@layout/YOURXMLNAME1" />
<include layout="@layout/YOURXMLNAME2" />
这在很多情况下再次使用布局时也很有用
【讨论】:
【参考方案4】:有很多方法可以解决这个问题。其他答案至少包括两种方法 - 根据情况使用 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);
);
【讨论】:
【参考方案5】:这是最适合您的解决方案ViewFlipper。 ViewFlipper 是一个简单的 ViewAnimator,它将在添加到其中的两个或多个视图之间进行动画处理。一次只显示一个孩子。如果需要,可以定期在每个孩子之间自动翻转。 Here 是取景器的好例子。 你也可以看看this。 编辑:-One *** answer for you
【讨论】:
以上是关于一项活动的两种不同布局的主要内容,如果未能解决你的问题,请参考以下文章