每个手机屏幕尺寸都会扭曲Android布局文件?

时间:2015-09-22 18:26:27

标签: android android-layout android-activity android-relativelayout

我正在尝试学习android平台,一切都很好。我犯了一个错误,从未切换到其他手机检查我的布局。所以,我今天做了,结果很失望。我使用RelativeLayout但主要使用height中的fill_parentwidth

这是我的layout文件之一:

<?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="#ffd5d6d6">

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="47dip"
    android:background="#ffffffff">

    <ImageView
        android:id="@+id/flag"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:src="@drawable/ic_back"
        android:layout_centerVertical="true"
        android:layout_marginLeft="16dp" />

    <TextView
        android:id="@+id/profileDesc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Roommate"
        android:textColor="#ff3c3f41"
        android:textSize="19dp"
        android:layout_centerInParent="true" />
</RelativeLayout>

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginTop="52dp">

    <TextView
        android:id="@+id/roommate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Who do you want your..."
        android:textColor="#ff3c3f41"
        android:textSize="20dp"
        android:layout_alignParentStart="false"
        android:layout_marginLeft="72dp"
        android:layout_marginRight="72dp"
        android:layout_marginTop="38dp" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="84dp"
        android:layout_alignBottom="@+id/relativeLayout10">

        <TextView
            android:id="@+id/gender"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Gender"
            android:textColor="#ff3c3f41"
            android:textSize="19dp"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="38dp" />

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="89dp"
            android:layout_marginTop="81dp"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="40dp"
            android:background="#ffffffff">
        </RelativeLayout>

        <TextView
            android:id="@+id/age"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Age"
            android:textColor="#ff3c3f41"
            android:textSize="19dp"
            android:layout_marginTop="215dp"
            android:layout_centerHorizontal="true" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:layout_marginTop="258dp"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="40dp"
            android:background="#ffffffff"
            android:id="@+id/relativeLayout6">

        </RelativeLayout>
    </RelativeLayout>

    <Button
        android:id="@+id/button"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="match_parent"
        android:layout_height="47dp"
        android:background="#fa6425"
        android:text="Next"
        android:textColor="#fff4f4f4"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true" />

</RelativeLayout>

以上布局在不同的手机屏幕中显示不同的alignment。解决这个问题的最佳方法是什么?任何帮助或指导都会很明显。

修改-1

2 个答案:

答案 0 :(得分:0)

您正在使用dp将元素相对于彼此固定定位:在更大和更高分辨率的屏幕中,具有固定高度和宽度的元素将更小,并且将具有更多空间来定位其他元素;在较小和较低分辨率的显示元素中,显示元素会更大,并且放置其他元素的空间更小。

最好不要使用固定尺寸和位置,而是尺寸和相对位置。最好使用更简单的布局作为LinearLayout,并将它们组合在一起。

答案 1 :(得分:0)

  

FILL_PARENT(在API等级8及更高版本中重命名为MATCH_PARENT),这意味着视图希望与其父级一样大(减去填充)...

     

fill_parent:视图应该与其父视图一样大(减去填充)。从API级别8开始不推荐使用此常量   替换为match_parent。

source