使用具有调整和对齐问题的相对布局

时间:2015-03-17 07:14:31

标签: android relativelayout

Android Studio 1.2

您好,

我有这个相对布局,它将是listview中的一行。所以我想保持相对的性能布局,因为会有很多滚动。

问题是,我似乎无法使对齐正确。这就是我所拥有的: enter image description here

以下是我设计的线框以及上面的内容:

enter image description here

日期和时间都可以。首先,只是Correct 20Incorrect 18的对齐方式它们应该与右边对齐。第二,thumbs upthumbs down不管我调整它们的大小,我不能让它们像线框那样对齐。

非常感谢任何建议,

只是一个简单的问题,设计看起来很无聊,任何建议让它看起来更性感;)

<?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="?android:attr/listPreferredItemHeightLarge"
    android:padding="8dp">

    <TextView
        android:id="@+id/tvDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="16 Mar 2015"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/tvTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:text="22:15"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/tvCorrectTxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:gravity="left"
        android:text="Correct 20"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/tvIncorrect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:gravity="left"
        android:text="Incorrect 18"
        android:textSize="18sp"/>

    <ImageView
        android:id="@+id/ivArrow"
        android:layout_width="15dp"
        android:layout_height="30dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:src="@drawable/ic_action_next_item"
        android:scaleType="center"/>

    <ImageView
        android:id="@+id/ivCorrect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/ivArrow"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_action_good"/>

    <ImageView
        android:id="@+id/ivIncorrect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/ivArrow"
        android:layout_alignParentBottom="true"
        android:src="@drawable/ic_action_bad"/>

</RelativeLayout>

3 个答案:

答案 0 :(得分:1)

将主要相对布局更改为LinearLayout,并在LinearLayout内部使用Relative Layout,如下所示

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeightLarge"
    android:padding="8dp">
<RelativeLayout 
android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeightLarge"
    android:padding="8dp">
    <TextView
        android:id="@+id/tvDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="16 Mar 2015"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/tvTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:text="22:15"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/tvCorrectTxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:gravity="left"
        android:text="Correct 20"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/tvIncorrect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:gravity="left"
        android:text="Incorrect 18"
        android:textSize="18sp"/>

    <ImageView
        android:id="@+id/ivArrow"
        android:layout_width="15dp"
        android:layout_height="30dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:src="@drawable/ic_action_next_item"
        android:scaleType="center"/>

    <ImageView
        android:id="@+id/ivCorrect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/ivArrow"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_action_good"/>

    <ImageView
        android:id="@+id/ivIncorrect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/ivArrow"
        android:layout_alignParentBottom="true"
        android:src="@drawable/ic_action_bad"/>

</RelativeLayout>
</LinearLayout>

答案 1 :(得分:1)

我会使用LinearLayout和TextViews的权重。像这样:

Layout

或者您可以尝试GridLayoutSupport GridLayout

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    app:rowCount="2"
    app:orientation="vertical">

    <TextView
        app:layout_gravity="center_vertical|left"
        android:text="16 Mar 2015"/>

    <TextView
        app:layout_gravity="center_vertical|left"
        android:text="22:15"/>

    <TextView
        app:layout_gravity="center_vertical|right"
        android:text="Correct 20"/>

    <TextView
        app:layout_gravity="center_vertical|right"
        android:text="Incorrect 18"/>

    <ImageView
        app:layout_gravity="center|bottom"
        android:src="..." />
    <ImageView
        app:layout_gravity="center|bottom"
        android:src="..."/>

    <ImageView
        app:layout_gravity="center_vertical"
        app:layout_rowSpan="2"
        android:src="..."/>

</android.support.v7.widget.GridLayout>

您可能需要额外的边距,或者仍然可以尝试权重。只要您使用ViewHolder模式,我认为权重不会导致性能问题。

答案 2 :(得分:1)

您可以在那里使用GridLayout或TableLayout,因为您的活动确实需要以这种方式组织数据。