0

我遇到了一种情况,我提出了一个颜色选择器。如果它是在纵向模式下完成的,一切都很好。但是,如果我在横向模式下进行操作(对话框不适合屏幕),则在尝试扩展布局时似乎会爆炸。

在视图不完全适合屏幕的横向模式下,是否有一些特殊的方法可以做到这一点?

除了屏幕空间之外,我还需要考虑哪些差异?

4

1 回答 1

1

克雷格,

阅读您的评论后,似乎对在 XML 中生成不同宽度和高度的方式存在误解。起初,这是一个普遍的误解。因此,这里要理解的是,各种对象的宽度虽然是动态的,但会对您的对象施加不同的行为。

layout_width/layout_height 一般

宽度和高度参数不影响对象的实际宽度和高度。它们影响显示的宽度和高度。这意味着您可以将宽度和高度设置为小于内容,并且如果内容大于容器,则滚动时仍然可以访问内容。

由于许多子视图从父视图中获取线索,这可能会导致您在上面看到的行为。这里的诀窍是首先了解发生了什么,然后对系统的行为进行补偿。

匹配父/填充父

通常,这意味着当前视图将从父视图获取其大小。如果 View 是顶级 View,则行为会略有变化。如果这恰好是对话框的顶级视图,那么它将是屏幕大小或内容大小(以较小者为准)。如果 View 是一个 Activity 的顶层 View,那么结果是一样的,但是看起来不一样。也就是说,它将具有完整的 Activity 不透明度和背景,但 View 的大小仅为屏幕的内容或大小(以较小者为准)。除非他们的宽度/高度基于此视图的宽度/高度,否则孩子的大小不受影响。

包装内容

在这种情况下,显示高度基于所有直接子项的显示高度。这种行为会向下级联到“最年轻”的后代,直到层次结构使用wrap_content.

您的问题(现在出现)

您的顶级视图使用 wrap_content,因此显示大小将基于所有子项的显示大小。在这种情况下,最好match_parent' or仅对顶级视图使用 fill_parent`(取决于您的 API)。如果不是内容,这至少会使对话框的大小合适。对于那些大小基于顶层 View 的控件,它们会对齐。那些不是必须手动调整。

现在,您必须在这里做出的决定是实施。您是否需要调整每个显示器的尺寸,或者只是景观。如果您的更改对纵向显示没有影响,那么一个文件应该是好的。如果没有,您将需要一个用于纵向(当前)的布局文件,然后是一个用于横向模式的调整文件。

如果您使用两个文件,您将拥有一个以layout_port当前文件命名的文件夹来存储。您将添加一个以layout_land调整后的文件夹命名的文件夹。它们将具有相同的名称,只是位于单独的文件夹中。

希望这可以帮助,

模糊逻辑

于 2012-01-14T23:05:04.387 回答