在同一个活动中更改/使用多个布局?

Posted

技术标签:

【中文标题】在同一个活动中更改/使用多个布局?【英文标题】:Changing/using multiple layouts within the same activity? 【发布时间】:2011-07-19 03:15:33 【问题描述】:

我是 android 编程的新手,但有很强的 Java 背景。我正在制作一个相当简单的游戏,它涉及通过各种简短的“关卡”,整个过程都是定时的,目标是尽可能快地获得时间。我把关卡放在引号里,因为它们很短,主要涉及在进行下一个之前做一些简单的任务(即点击一个按钮)。因此,我没有为每个级别创建不同的活动,而是决定将所有内容保留在一个活动中,当用户完成一个级别的所有任务时,使用 setContentView() 方法设置不同的布局。我的问题是,每次切换布局时,我都需要使用 findViewById() 重置指向按钮的指针,即使它们的名称相同。如果有人可以解释为什么我需要这样做,那会很有帮助吗?另外,由于我对android还很陌生,也许我没有以最有效的方式来解决这个问题?任何建议都将受到欢迎和赞赏。

我也认为这可能是相关的,但我有一个计时器,我想在整个布局中保持不变?我在其他问题中看到跨活动这是不可能的,但我想检查跨布局的情况。

提前感谢您的帮助。

编辑:谢谢 ania,viewflipper 看起来是完美的解决方案

编辑:所以在对 ViewFlipper 进行了一些试验后,我决定将它用于我的项目。虽然它没有解决必须在每个新关卡中重新添加按钮的问题(我通过给每个按钮一个不同的名称来解决这个问题,即使在所有布局中也是如此),它确实给了我一些不错的动画效果以及便利性使用 showNext 和 showPrevious 方法。

【问题讨论】:

【参考方案1】:

你试过ViewFlipper吗?在这种情况下,这似乎是完美的解决方案。

【讨论】:

在查看 ViewFlipper 之后,我的想法是否正确/认为我会使用它来基本上循环布局?我以前没用过这个,不知道它是否可以解决每次都必须重置按钮的问题? 在 ViewFlipper 中,您可以放置​​许多不同的视图,您可以在它们之间设置动画。这和你现在做的一样。我不知道您如何定义按钮,它们是在您的布局中还是在您的每个布局中都是不变的?如果按钮总是在那里,你可以在你的布局中使用 ViewFlipper 和按钮。 VF 将在视图之间切换,但按钮将一直存在。同样的事情也适用于天文台。 您的按钮在 setContentView 之后不存在,因为此方法从 xml 文件创建新布局。您期望如果您定义了具有相同 id 的按钮,则不会发生任何变化,但是在 setContentView 方法之后,您以前的视图对象不再可供您使用(以及您的按钮)并创建新布局(视图对象)(使用新按钮)。在这种情况下,使用相同的名称不会改变任何内容,您仍然需要在新布局中再次找到您的对象。 哦,好吧,所以我认为我现在定义按钮的方式是通过布局(我在 xml 中创建它们,然后使用 findViewById,我这样做对吗?),但主要原因我这样做的原因是因为按钮在每个新布局中都会在屏幕上移动,所以虽然它们仍然具有相同的背景图像、文本等,但它们位于不同的位置。 据我所知 android - 是的,这就是你的问题 - 创建新的布局。我不知道您的应用程序,但也许您可以更改背景视图并将按钮留在那里 - 移动。所以:创建一个布局,把你的按钮和 ViewFlipper 放在那里,你可以在它们之间切换许多不同的视图。因为我没有看到您的代码,所以很难提出任何不同/更好的建议。

以上是关于在同一个活动中更改/使用多个布局?的主要内容,如果未能解决你的问题,请参考以下文章

一个活动或单独活动中的多个片段

当条件多个布局应用于单个活动时管理单个数据绑定对象

根据活动(Android)更改自定义适配器上的布局文件

如何为多个活动全局定义特定布局onclick函数

可以使用现有布局创建新的 Android 活动吗?

我的设置活动的布局文件在哪里?