2015-06-16 67 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); 
}