三星Galaxy Tab上的相同布局看起来不同

Van*_*nel 1 android android-layout

我正在开发一个支持多种屏幕大小的Android 2.2.2应用程序,所有屏幕都是纵向的.我不会支持景观.

我在HTC Desire和三星Galaxy Tab 7.7上测试了以下布局.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/no_conectado"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/labelSelGateName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_marginTop="80dp" />

    <TextView
        android:id="@+id/labelSelOpened"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />

    <ProgressBar
        android:id="@+id/indicatorActivityView"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_marginTop="22dp"
        android:layout_gravity="center_horizontal" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="110dp"
        android:layout_marginTop="60dp"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/btnMyGates"
            android:layout_width="50dp"
            android:layout_height="110dp"
            android:layout_marginLeft="20dp"
            android:layout_weight=".33"
            android:background="@null"
            android:contentDescription="@string/layout_empty"
            android:onClick="onGateClick" />

        <LinearLayout
            android:layout_width="90dp"
            android:layout_height="110dp"
            android:layout_weight=".33"
            android:orientation="vertical" >

            <ImageButton
                android:id="@+id/btnOpen"
                android:layout_width="90dp"
                android:layout_height="55dp"
                android:layout_gravity="center_horizontal"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:background="@null"
                android:contentDescription="@string/layout_empty"
                android:onClick="onOpenDoorClick" />

            <ImageButton
                android:id="@+id/btnClose"
                android:layout_width="90dp"
                android:layout_height="50dp"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="10dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:background="@null"
                android:contentDescription="@string/layout_empty"
                android:onClick="onCloseDoorClick" />

        </LinearLayout>

        <ImageButton
            android:id="@+id/btnOptions"
            android:layout_width="50dp"
            android:layout_height="110dp"
            android:layout_marginRight="20dp"
            android:layout_weight=".33"
            android:background="@null"
            android:contentDescription="@string/layout_empty"
            android:onClick="onOptionClick" />

    </LinearLayout>

    <ImageButton
        android:id="@+id/btnFaqs"
        android:layout_width="110dp"
        android:layout_height="60dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onFAQClick" />

    <ImageButton
        android:id="@+id/btnInfo"
        android:layout_width="110dp"
        android:layout_height="60dp"
        android:layout_gravity="right"
        android:layout_marginTop="20dp"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onInfoClick" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我有ldpi,mdpi,hdpi和x-hdpi的图像.

背景图片看起来不错,但所有小工具(TextView,ProgressBar,ImageButton等)都没有在正确的位置,当我测试的三星Galaxy Tab.

我使用'Nexus One`作为模型在Eclipse上设计了这个布局.

在这里,人们建议我每个屏幕尺寸和密度只使用一个布局,但它不起作用.我正在使用dp单位fill_parent等等,但在Galaxy Tab上有所不同.

我需要x-large屏幕尺寸的布局吗?

Adi*_*nia 6

实际上,您收到的建议很好:可能只有一个布局文件,但正如评论中已经建议的那样,硬编码尺寸也不好,即使您使用dp或者dip,特别是在您定位所有屏幕尺寸时密度可用.

相反,您应该使用指向维度值的链接替换这些值.

例如,代替 android:layout_marginLeft="10dp",你会有类似的东西

android:layout_marginLeft="@dimen/textview_margin_left"
Run Code Online (Sandbox Code Playgroud)

其中textview_margin_left在dimens.xml中定义,在不同的文件夹中具有不同的值;
可能在文件夹:中<dimen name="textview_margin_left">10dp</dimen>,
在文件夹值 - 大:中 <dimen name="textview_margin_left">20dp</dimen>,
而在values-xlarge中:<dimen name="textview_margin_left">30dp</dimen>

但这只是一个示例,您必须测试所有尺寸和分辨率,并找到最适合您布局的值.在Eclipse中,在Graphical Layout模式下,您可以轻松了解布局在各种设备上的外观,只需单击Nexus One,然后从列表中选择其他模型,布局就会自动更新.

此外,您可以移动dimens.xml所有文本大小,这对x-large设备非常有用.

仅使用一个RelativeLayout而不是多个imbricated LinearLayouts也可能是一个好主意,并使用对象的相对定位,而不是一些硬编码值.