簡體   English   中英

使布局在所有設備上看起來都不錯

[英]Make layout look good on all devices

我正在使用模擬器來構建我的第一個android應用。 當我使用realease .apk在手機上發布我的應用程序時,我沒有期望的結果。

<Button
    android:text="Log In"
    android:layout_width="match_parent"
    android:layout_height="100px"
    android:layout_marginTop="482px"
    android:id="@+id/loginButton"
    android:background="#76988F"
    />

我想要的是讓某人解釋如何設置按鈕或任何其他界面控件,使其在任何設備上看起來都相似。 所有設備都是不同的,所以假設我在XAML中放入了這樣的邊距並啟動了模擬器,我將看到以下界面:

-----------------------
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|     MyButton        |
-----------------------

但是當我在設備上啟動它時,該按鈕將出現在其他位置:

-----------------------
|                     |
|                     |
|                     |
|       MyButton      |
|                     |
|                     |
|                     |
|                     |
|                     |
-----------------------

可能是因為根據我所使用的設備和我之前嘗試過的仿真器, x pixels的邊距不會將我帶到相同的位置。 如何使這些控件在所有設備上都放置在合適的位置?

搜索這些信息有點困難,因為我沒有讓元素停在固定位置的方式的名稱。

由於許多設備的屏幕尺寸,分辨率等都不同,因此可能需要避免的主要事情是在放置布局元素時使用絕對位置。 Android SDK具有一些功能強大的結構來避免絕對定位(即LinearLayout,RelativeLayout),因此請嘗試使用它們,而不是定義“ 12dp”之類的位置,而應使用正確的layout_width,layout_height(wrap_content或match_parent)和layout_weight組合,可以幫助您放置布局元素而無需指定絕對位置。

看到您的代碼,我想到的第一件事是

  • 不要在應用程序代碼中使用硬編碼的像素值。

您應該參考最佳做法 正如醫生所說

出於性能原因並簡化代碼,Android系統使用像素作為表示尺寸或坐標值的標准單位。 這意味着視圖的尺寸始終在代碼中使用像素表示,但始終基於當前的屏幕密度。 例如,如果myView.getWidth()返回10,則視圖在當前屏幕上為10像素寬,但是在具有更高密度屏幕的設備上,返回的值可能為15。如果在應用程序代碼中使用像素值來對於未針對當前屏幕密度預先縮放的位圖,您可能需要縮放在代碼中使用的像素值,以匹配未縮放的位圖源。

您犯的另一個錯誤是使用px。 實際上,取決於此密度,屏幕具有不同的密度,像素具有不同的大小。 因此,您可能更喜歡使用dp(密度相關的度量單位)。 至於您的文字大小,則必須使用sp。

使用此屬性android:layout_marginTop="482px" ,您不應使用px。 您應該使用dp。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM