一项活动的两种不同布局

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

【讨论】:

以上是关于一项活动的两种不同布局的主要内容,如果未能解决你的问题,请参考以下文章

数据归一化的两种常用方法

不同布局的旋转 - iOS 4

Swiftui - 列表第一项的不同视图(布局)

根据父活动在片段中调用不同的方法

ado:SqlDataAdapter的两种不同写法,以及SqlCommand的两种不同写法

GUI 的两种不同语法 -> 不同的行为