2012-06-19 48 views
1

我很失望。我剛剛完成了基於360dp的「正常屏幕」項目,但是當我嘗試在摩托羅拉Atrix中運行時,我有一個驚喜。摩托羅拉Atrix是360dp,而不是320dp,因爲他的寬度是540px。現在我正在打破我的頭腦,找出要解決的問題。我如何創建360dp的佈局?如何爲320dp和360dp創建佈局?

我嘗試了所有的這些:

  • RES /價值觀sw360dp
  • RES /佈局sw360dp

main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="#DFEFF1"> 

    <Button 
     android:background="#AAAA11" 
     android:id="@+id/button1" 
     android:layout_width="@dimen/default_width" 
     android:layout_height="@dimen/default_height" 
     android:text="SOME TEXT 1"   
     /> 


    <Button 
     android:background="#FFAA11" 
     android:id="@+id/button2" 
     android:layout_width="@dimen/default_width" 
     android:layout_height="@dimen/default_height" 
     android:text="SOME TEXT 2" 
     android:layout_alignParentRight="true" /> 
</RelativeLayout> 

RES /價值/串.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <dimen name="default_width">160dp</dimen> 
    <dimen name="default_height">160dp</dimen> 

</resources> 

摩托羅拉Atrix

Motorola Atrix

三星Galaxy SII

Samsung Galaxy SII

+0

您能否請張貼一些代碼,以便我們可以引導您朝着正確的方向發展? – Abhijit

+0

@Ahhijit我剛剛編輯我的帖子,我插入佈局和常量。 – Gandarez

回答

4

一般設計佈局時,要避免規劃爲特定的像素大小。如果您想根據像素來分隔所有佈局,那麼您幾乎必須爲每個設備提供一種佈局(世界上有很多設備具有不同尺寸的屏幕)。通常你會想爲幾種不同類型的大小提供佈局資源。 layout-small,layout-normal,layout-large等等。如果你提供那些和你的佈局是建立在一個很好的方式,它應該擴展到不同大小的設備很好。

當您在較大尺寸的設備上運行時,您的佈局是否存在特定錯誤?也許如果你發佈我可以幫助你嘗試解決它,而不需要按像素大小分開你的佈局。

Supporting Multiple Screens在開發人員文檔中有很多關於如何構建應用程序的很好的信息,以便它們能夠很好地擴展。

編輯:

一個解決你的問題的寬度沒有使用一個靜態的DP值,而應該讓按鈕增長,以填補高達拉緊但是太多的空間(水平)的潛在方式屏幕寬度。你可以用layout_weight做到這一點,並將寬度設置爲fill_parent。我現在無法訪問eclipse,所以我無法測試,但我想肯定也有一種方法可以在沒有線性佈局的情況下獲得這種效果,但這是我想到的第一種方法。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 

    android:background="#DFEFF1"> 

    <LinearLayout 
    android:id="@+id/buttonRow" 
    android:orientation="horizontal" 
    android:layout_height="@dimen/default_height" 
    android:layout_width="fill_parent"> 


    <Button 
     android:background="#AAAA11" 
     android:id="@+id/button1" 
     android:layout_width="0" 
     android:layout_height="@dimen/default_height" 
     android:text="SOME TEXT 1"   
     android:layout_weight="1" 
     /> 


    <Button 
     android:background="#FFAA11" 
     android:id="@+id/button2" 
     android:layout_width="0" 
     android:layout_height="@dimen/default_height" 
     android:text="SOME TEXT 2" 
     android:layout_weight="1" /> 

</LinearLayout> 
</RelativeLayout> 
+0

我剛剛編輯了我原來的帖子。我把2個屏幕截圖,一個用於摩托羅拉Atrix,另一個用於三星Galaxy SII。正如你所看到的,兩者都不同。這些是2個不同背景顏色的按鈕。 – Gandarez

+0

當你使用layout_weight時,你應該將layout_width設置爲0(我認爲如果你使用fill_parent,lint會給你一個警告)。但無論如何,所有這些都結束了。 – Matthieu

+0

好的通話,我現在記得那個警告。它應該設置爲「0」還是「0dp」? – FoamyGuy