如何在android中为几个屏幕实现正确的UI

时间:2014-01-20 23:26:17

标签: android android-layout

这里我试图处理不同的屏幕,这些是我试图处理的几个屏幕,如果我调整一个屏幕剩余的屏幕得到错误,没有得到什么是问题 这是screenshot 这是我的代码

  <?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:background="@drawable/transactionpagebg" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="160dp"
        android:gravity="center"
        android:paddingLeft="50dp"
        android:text="Current Meter Reading"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@android:color/white" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/editText1"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:inputType="number" />

        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="150dp"
            android:layout_height="50dp" />
    </LinearLayout>

    <AbsoluteLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/saveButton"
            android:layout_width="113px"
            android:layout_height="wrap_content"
            android:layout_x="61dp"
            android:layout_y="330dp"
            android:background="@drawable/savebutton" />

        <Button
            android:id="@+id/settingsButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_x="208dp"
            android:layout_y="330dp"
            android:background="@drawable/settingbutton" />
    </AbsoluteLayout>

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

要做到这一点,您需要支持不同的屏幕尺寸,您需要具有不同的布局,以及清单文件中的一些更改......

检查此问题How to support different screen size in android

和此链接http://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:1)

有很多方法可以让每个视图在各种屏幕上都能正常显示。但是,我发现有两种方法最适合我(目前):

  1. 要使视图动态设置其屏幕位置,请将小部件包装在LinearLayout(LL)中,并将这些LL放在单个LL中。将内部LL的权重设置为1,它们将在父LL中平等地隔开。这适用于水平和垂直布局。小部件之间的距离由操作系统自动调整。

  2. 为不同的屏幕尺寸(小,中,大)创建不同的dimens.xml文件夹/文件,并根据需要的密度(mdpi,hdpi,xhdpi等)进一步区分它们。这样,您可以为每个尺寸/密度设置边距,填充,字体大小,以获得您想要的效果。

  3. 编辑:我看到你把&#34; TRANSACTION&#34;在后台绘制?你做不到!您需要仅使用文本创建图像,并将其放在布局顶部的ImageView中。这样,您可以根据需要为不同的屏幕设置其位置和大小,并使其他小部件相对于该图像调整其位置。

    更好的方法是找到一个可以匹配你想要的免费字体(ttf文件),然后把它放在TextView中。

    以下是我提到的概念的布局快速示例。您可以将边距和字体大小放在dimens.xml文件中,以便调整它们。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#0000ee"
        android:orientation="vertical" >
    
        <LinearLayout
            android:id="@+id/hh"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="36dp"
            android:orientation="vertical" >
    
            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="36dp"
                android:text="TRANSACTION"
                android:textColor="#ffffff"
                android:textSize="28sp" />
    
            <TextView
                android:id="@+id/test_textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:text="Current Meter Reading"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@android:color/white" />
    
        </LinearLayout>
    
        <LinearLayout
            android:id="@+id/test_linearLayout1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="horizontal" >
    
            <EditText
                android:id="@+id/test_editText1"
                android:layout_width="130dp"
                android:layout_height="wrap_content"
                android:layout_marginRight="24dp"
                android:background="#ffffff"
                android:inputType="number" />
    
            <Spinner
                android:id="@+id/test_spinner1"
                android:layout_width="150dp"
                android:layout_height="50dp"
                android:background="#999999" />
    
        </LinearLayout>
    
        <LinearLayout
            android:id="@+id/LinearLayout1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1" >
    
            <Button
                android:id="@+id/test_saveButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="24dp"
                android:text="Save" />
    
            <Button
                android:id="@+id/test_settingsButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    
    </LinearLayout>