所有Android设备上的UI元素(按钮,图像按钮)的位置相同

时间:2014-01-10 19:37:31

标签: android xml android-layout devise imagebutton

我的应用程序使用通过XML和可绘制文件夹构建的按钮和图像按钮 在某些设备上,应用程序UI元素(按钮和图像按钮)会丢失其位置并相互重叠,而在某些设备上,屏幕底部的最后一个按钮会消失。 方向改变时也会发生同样的情况。

我希望我的所有元素在所有设备上都处于同一位置 如何使用XML实现此目的 有没有简单易行的方法呢? 这是我的XML。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/bg"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/main_btn_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="55dp"
        android:layout_marginTop="71dp"
        android:background="#ffffff"
        />

    <ImageButton
        android:id="@+id/main_btn_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/main_btn_1"
        android:layout_marginRight="56dp"
        android:background="#000000"
        />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/main_btn_1"
        android:layout_below="@+id/main_btn_1"
        android:textColor="#00aeed"
        android:textStyle="normal" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView1"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignLeft="@+id/main_btn_2"
        android:textColor="#ea1d24"
        android:textStyle="normal" />

    <ImageButton
        android:id="@+id/main_btn_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="42dp"
        android:background="#000000"
        />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/main_btn_3"
        android:layout_below="@+id/main_btn_3"
        android:textColor="#f7941d"
        android:textStyle="normal" />

    <ImageButton
        android:id="@+id/main_btn_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_alignTop="@+id/main_btn_3"
        android:background="#000000"
         />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/main_btn_4"
        android:layout_below="@+id/main_btn_4"
        android:textColor="#f7941d"
        android:textStyle="normal" />

    <ImageButton
        android:id="@+id/main_btn_5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView4"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="12dp"
        android:background="#000000"
        />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/main_btn_5"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal"
        android:textColor="#0065b3"
        android:textStyle="normal" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

由于有许多设备具有如此多的不同屏幕尺寸,分辨率等,因此在放置布局元素时,您必须避免使用绝对位置。 Android SDK有一些强大的结构来避免绝对定位(即LinearLayout,RelativeLayout),所以尝试使用它们而不是定义像“12dp”这样的位置,使用layout_width,layout_height(wrap_content或match_parent)和layout_weight的正确组合,可以帮助您放置布局元素而不指定绝对位置。