Android上的手机与平板电脑的布局

时间:2015-06-28 03:38:09

标签: android android-layout

我设计了一个图像视图为150dp x 150dp的布局。平板电脑与手机相比看起来很糟糕。请看下面的图片。 enter image description here

如何使布局看起来与平板电脑上的手机类似。使用相同的布局文件,即不对不同的屏幕尺寸使用不同的布局。

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

    <RelativeLayout
        android:id="@+id/layout_title"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_centerHorizontal="true"
        android:background="@drawable/title_with_shadow"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:textSize="16sp"
            android:text="@string/preview"
            android:textColor="@color/title_text_color"
            android:textStyle="bold" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/imgPreviewLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/layout_title"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:background="@drawable/category_item"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imgPreview"
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:layout_centerHorizontal="true"
            android:scaleType="fitXY"
            android:src="@drawable/noimage" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/tabcontrolLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/imgPreviewLayout"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:gravity="center_horizontal">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_margin="5dp"
            android:layout_marginLeft="10dp"
            android:gravity="center_horizontal"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:text="@string/pieces"
                android:textColor="#040404"
                android:textSize="15sp"
                android:textStyle="bold" />

            <Spinner
                android:id="@+id/spinerCount"
                android:layout_width="70dp"
                android:layout_height="35dp"
                android:gravity="center" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_margin="5dp"
            android:gravity="center_horizontal"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:text="@string/rotation"
                android:textSize="15sp"
                android:textStyle="bold" />

            <ToggleButton
                android:id="@+id/btn_rotate_puzzel"
                android:layout_width="wrap_content"
                android:layout_height="35dp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_margin="5dp"
            android:layout_marginRight="10dp"
            android:gravity="center_horizontal"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:text="@string/background"
                android:textSize="15sp"
                android:textStyle="bold" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/color_selection" />
        </LinearLayout>

        <ImageButton
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_below="@+id/layout_Rotation"
            android:layout_centerHorizontal="true"
            android:layout_margin="5dp"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"
            android:padding="8dp"/>
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/magic_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_alignParentBottom="true">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:background="@drawable/title_with_shadow"
            android:id="@+id/magic_btn"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:textSize="15sp"
                android:layout_marginLeft="10dp"
                android:text="@string/cheatcode"
                android:textColor="@color/title_text_color"
                android:textStyle="bold" />
        </RelativeLayout>

        <include
            layout="@layout/panel"
            android:background="@drawable/background_with_shadow"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>


</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

  

如何使布局看起来与平板电脑上的手机类似。使用相同的布局文件,即不对不同的屏幕尺寸使用不同的布局。

您不能,您必须创建不同的布局。

它不像将设备分类为手机或平板电脑那么简单,甚至只是按照物理屏幕尺寸进行分类 - 您可以拥有两个具有完全相同的物理屏幕尺寸但具有不同屏幕分辨率的设备WRT实际每英寸点数布局看起来会有所不同。

使用与密度无关的像素(dip或dp)只能在对屏幕尺寸/密度进行微调时才能使用 - 当只有很小的差异时它会起作用,但是当差异较大时则不然

简而言之,Android有如此多的选项WRT密度(例如,ldpi,mdpi,hdpi等)和大小(小,正常,大等)的原因是,在许多情况下,你不能创建单个布局,并期望它在每个设备上进行转换。

答案 1 :(得分:1)

如果您希望应用以不同的设备尺寸显示,则除了布局文件夹外还必须创建这些文件夹:

布局陆

布局大

布局latge陆

布局小

布局小土地

布局XLARGE

布局XLARGE陆

与小型,大型和超大屏幕以及水平和垂直模式有关, 你必须完成你的开发,完成后,将布局文件夹中的所有设计布局复制到这些文件夹...并运行程序......如果视图有一些移动或不好的地方,你可以更改它的属性并更正它.. .. 您必须将此代码添加到manifest.xml:

 <compatible-screens>
        <screen
            android:screenDensity="ldpi"
            android:screenSize="small" />
        <screen
            android:screenDensity="mdpi"
            android:screenSize="normal" />
        <screen
            android:screenDensity="xhdpi"
            android:screenSize="large" />
        <screen
            android:screenDensity="xhdpi"
            android:screenSize="xlarge" />
    </compatible-screens>