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