RelativeLayout问题不适合所有屏幕尺寸

时间:2015-06-07 15:54:24

标签: android android-relativelayout

我正在开发我的第一个应用程序在android中,我坚持我的xml布局。我的布局中有4个textviews,textview下面有2个图像按钮。 Textview需要放在另一个之下,大小不同,即第1和第2文本视图为1行,第3文本视图最多可以为3-4行,第4文本视图为2行。需要将2个按钮放在第4个文本视图下方,但彼此相邻。下面是我的布局文件: -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:weightSum="1">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:id="@+id/name"
    android:text="LocAlert"
    android:textStyle="italic"
    android:layout_gravity="center_horizontal"
    android:layout_weight="0.07"
    android:textColor="@android:color/holo_blue_dark"
    android:layout_marginTop="37dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:id="@+id/task_name"
    android:textStyle="bold"
    android:text="name"
    android:textColor="@android:color/tab_indicator_text"
    android:layout_gravity="center_horizontal"
    android:layout_below="@+id/name"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="39dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="@android:color/tab_indicator_text"
    android:text="location"
    android:layout_gravity="center_horizontal"
    android:id="@+id/task_location"
    android:gravity="center"
    android:layout_marginTop="42dp"
    android:layout_below="@+id/task_name"
    android:layout_centerHorizontal="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="distance"
    android:textColor="@android:color/tab_indicator_text"
    android:layout_gravity="center_horizontal"
    android:id="@+id/task_distance"
    android:layout_marginBottom="56dp"
    android:layout_above="@+id/imageButton"

    android:layout_centerHorizontal="true"/>

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageButton"
    android:src="@drawable/speakblue"
    android:background="#FFFFFF"
    android:text="Speak Out"
    android:layout_marginBottom="55dp"
    android:layout_alignParentBottom="true"
    android:layout_toStartOf="@+id/task_name" />

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageButton2"
    android:background="#FFFFFF"
    android:src="@drawable/okblue"
    android:layout_below="@+id/task_distance"
    android:layout_alignParentEnd="true" />

我面临的问题是第3和第4版textview和图像按钮。由于我的第3个文本视图大小根据线条增加和减少我的第4个textview和按钮也混乱..不适合相同格式的其他正确..当我在具有大屏幕尺寸的设备上运行我的应用程序时textview的很多差距..如何让我的布局适合所有的屏幕尺寸和适当的空间..请帮助..

被修改

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:id="@+id/name"
    android:text="LocAlert"
    android:textStyle="italic"
    android:layout_gravity="center_horizontal"
    android:layout_weight="1"
    android:textColor="@android:color/holo_blue_dark"
    android:layout_marginTop="37dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:id="@+id/task_name"
    android:textStyle="bold"
    android:text="name"
    android:textColor="@android:color/tab_indicator_text"
    android:layout_gravity="center_horizontal"
    android:layout_below="@+id/name"
    android:layout_centerHorizontal="true"
    android:layout_weight="1" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="@android:color/tab_indicator_text"
    android:text="location"
    android:layout_gravity="center_horizontal"
    android:id="@+id/task_location"
    android:gravity="center"
    android:layout_weight="1"
    android:layout_below="@+id/task_name"
    android:layout_centerHorizontal="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="distance"
    android:textColor="@android:color/tab_indicator_text"
    android:layout_gravity="center_horizontal"
    android:id="@+id/task_distance"
    android:layout_below="@+id/task_location"

    android:layout_weight="1"
    android:layout_centerHorizontal="true"/>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/task_distance">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageButton"
        android:src="@drawable/speakblue"
        android:background="#FFFFFF"
        android:text="Speak Out"
        android:layout_weight="1" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageButton2"
        android:background="#FFFFFF"
        android:src="@drawable/okblue"

        android:layout_weight="1"
        android:layout_gravity="right"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

I ended up with this.. There's a space between the 2nd textview and 3rd textview which i don't want.. How can i solve this.. ?

enter image description here

1 个答案:

答案 0 :(得分:1)

您正在使用margintop作为前三个文本视图,然后切换到剩余元素的边距底部,因此这是相对于父顶部和底部修复元素。然后留下最中间的元素来填补中间的空白。

  1. 我会使用layout_below来提交文本视图和按钮之间的位置差异,而不是top_margin/bottom到父元素。

    http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html#attr_android:layout_below

  2. 我会为每个textview /按钮使用一个加权总和,总计加权总数..

  3. What is android:weightSum in android, and how does it work?