繁体   English   中英

一个活动的两种不同布局

[英]two different layouts for one activity

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

是的可能。 您可以为单个活动使用尽可能多的布局,但显然不能同时使用。 您可以使用以下内容:

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

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

等等...

是的,这也适用于开关盒

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

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;
    }

我建议使用Fragments

如果您对碎片不满意,可以解释更多以寻找其他解决方案将会很有帮助

编辑

使用android支持库来支持较低的OS版本

EDIT2

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

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

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

你可以参考这个链接

为一个Activity使用两个布局xml文件

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

有很多方法可以解决这个问题。 其他答案包括至少两种方法 - 根据案例使用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);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM