0

我创建了一个由imageviewstextviews组成的布局。当我运行应用程序时,纵向屏幕方向上的每件事情都很好,但是当我将设备旋转至lanscape时,缩小(较小)。在不同的屏幕方向上保持相同的视图尺寸

我想拥有(不管屏幕方向)相同大小的视图。我不希望视图看起来更小或更大,我希望不同屏幕方向的尺寸相同。

注:布局中的所有dimesnions在DP的宽度和高度,文字的字体是在SP

+0

尝试将layout_width和layout_height设置为wrap_content而不是match_parent,并将尺寸设置为所需的尺寸。 – bwoogie

+0

@bwoogie但我认为我使用的是重量 – user2121

回答

0

您的ImageView的大小是按边缘对齐的属性,然后是边距?随着父边界在设备方向上变化,这会扭曲图像。

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

+0

我没有xml righr,现在也没什么它是或多或少复杂的一个......但我想告诉你,是有一些边距指定..是它问题?? – user2121

+0

如果您的图像的顶部和底部与父级对齐,然后按照5dp的边距进行设置。在横向和纵向模式下,顶部和底部边缘始终从父/屏幕边缘开始5dp。景观的垂直长度比肖像短,所以如果用这种方法调整图像的大小,横向图像会出现压扁或拉伸。 –

+0

您可以通过将ImageViews位置与仅一个垂直和/或一个水平属性对齐来解决此问题;然后通过使用换行内容或特定的dp大小来调整图像大小? –

0

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

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

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