2015-06-16 105 views
0

如果我想支持多種屏幕尺寸,我可以使用small,normal,large和xlarge尺寸。這在肖像模式中工作正常,但在橫向模式中不起作用。例如,如果我以橫向模式創建3,2「設備的佈局,相同的代碼不適合橫向Modus中的3,3」設備。因爲它在3,3「設備看起來不是對稱的,那麼我做錯了什麼?!Eclipse佈局:如何在橫向模式下支持多種屏幕尺寸?

正如我所說:我使用相同的代碼爲3,2」和3,3「設備(RelativeLayout):

<Button 
    android:id="@+id/Button01" 
    android:layout_width="150dp" 
    android:layout_height="75dp" 
    android:layout_alignLeft="@+id/button1" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="50dp" 
    android:text="Button" /> 

<Button 
    android:id="@+id/Button02" 
    android:layout_width="150dp" 
    android:layout_height="75dp" 
    android:layout_alignBaseline="@+id/button1" 
    android:layout_alignBottom="@+id/button1" 
    android:layout_marginLeft="25dp" 
    android:layout_toRightOf="@+id/button1" 
    android:text="Button" /> 

<Button 
    android:id="@+id/Button03" 
    android:layout_width="150dp" 
    android:layout_height="75dp" 
    android:layout_alignBaseline="@+id/Button01" 
    android:layout_alignBottom="@+id/Button01" 
    android:layout_alignLeft="@+id/Button02" 
    android:text="Button" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="150dp" 
    android:layout_height="75dp" 
    android:layout_above="@+id/Button01" 
    android:layout_alignParentLeft="true" 
    android:layout_marginBottom="46dp" 
    android:layout_marginLeft="78dp" 
    android:text="Button" /> 

回答

0

我通過捕獲運行時窗口的高度和寬度大小來實現它,並且 建議如何去除任何複雜城市 1.使用相對佈局並保持引用ID。 2.將百分比高度或寬度應用於組件。 實施例:

WindowManager wm = (WindowManager) context 
       .getSystemService(context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 
     DisplayMetrics metrics = new DisplayMetrics(); 
     display.getMetrics(metrics); 
     int width = metrics.widthPixels; 
     int height = metrics.heightPixels; 

在活動手柄UI組件:

textView.setWidth(getSize(screenWidth, 30)); 
    textView.setHeight(getSize(screenHeight, 13)); 
    textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getSize(screenHeight, 6)); 


public static int getSize(int screenSize, double percentage) { 
    return (int) ((screenSize * percentage)/100); 
}