在不同的屏幕方向上保持相同的视图大小

时间:2016-12-27 20:25:52

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

我创建了一个由imageviewstextviews组成的布局。当我运行应用程序时,纵向屏幕方向上的所有内容都很好,但是当我将设备旋转到lanscape时imageviews缩小(尺寸更小)。

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

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

2 个答案:

答案 0 :(得分:0)

您的ImageView是否通过与边缘对齐的属性进行调整,然后是边距?当父级边界在设备方向上发生变化时,这会使图像失真。

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

答案 1 :(得分:0)

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

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

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