【问题标题】:Maintain the same view size on different screen orientation在不同的屏幕方向上保持相同的视图大小
【发布时间】:2016-12-27 20:25:52
【问题描述】:

我创建了一个由imageviewstextviews 组成的布局。当我运行应用程序时,在纵向屏幕方向上一切正常,但是当我将设备旋转为横向时,imageviews 会缩小(尺寸更小)。

我希望(无论屏幕方向如何)具有相同大小的视图。我不希望视图看起来更小或更大,我希望在不同的屏幕方向上具有相同的尺寸。

注意:布局中的所有尺寸都在 dp 中表示宽度和高度,以及它在 sp 中的文本字体。

【问题讨论】:

  • 尝试将 layout_width 和 layout_height 设置为 wrap_content 而不是 match_parent,并将尺寸设置为您想要的尺寸。
  • @bwoogie 但我想我正在使用权重

标签: android android-layout android-linearlayout android-relativelayout


【解决方案1】:

您的 ImageView 是否通过对齐边缘的属性以及边距距离来调整大小?当父边界在设备方向上发生变化时,这会扭曲您的图像。

另外,请提供您的 xml 代码,我没有作为评论要求的声誉。

【讨论】:

  • 我现在没有正确的 xml,无论如何它或多或少是一个复杂的...但我想告诉你,是的,有一些指定的边距..这是一个问题吗??
  • 如果您将图像的顶部和底部与父级对齐,然后按边距调整大小,例如 5dp。在横向和纵向模式下,顶部和底部边缘将始终从父/屏幕边缘结束/开始 5dp。横向的垂直长度比纵向的短,因此如果您使用这种方法调整图像大小 - 横向图像会显得被压扁,或者纵向拉伸。
  • 您可以通过仅将 ImageViews 位置与一个垂直和/或一个水平属性对齐来解决此问题;然后使用 wrap content 或特定 dp 大小调整图像大小?
【解决方案2】:

Android 尝试通过使用 layout_weights、将宽度/高度设置为 match_parent 等内容来帮助您创建响应式布局(根据设备屏幕大小改变元素位置和大小的布局)。因为如果您使用这些属性然后旋转手机屏幕,您的图像大小将会改变,因为系统会认为您希望文本/图像根据方向或设备屏幕大小来改变大小。

即使您混合布局权重和硬编码 dp 像素大小,这也会发生 - 发生的情况是 android 会测量您所有的硬编码值并包装内容值,然后对于屏幕上的任何额外空间,它会扩展视图有重量,与​​你给他们的重量成正比。这就是为什么你要sometimes see people 设置 layout_height="0dp" 然后设置权重。

如果您想要一个始终相同大小的图像,您可以硬编码一定数量的 dp 像素,并删除任何提及 layout_weight 或 match_parent。您也可以对边距进行硬编码。根据图像的大小,这意味着如果您在太小的手机上查看图像,则将其分开最终会出现在屏幕外。根据您想要发生的情况,有多种方法可以解决此问题。例如,如果您希望屏幕上的元素保持相同大小但根据设备的屏幕大小重新排列,您可以针对不同的屏幕大小进行多种布局并使用resource folder qualifiers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 2016-02-23
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多