Android Studio 1.2
您好,
我有这个相对布局,它将是listview中的一行。所以我想保持相对的性能布局,因为会有很多滚动。
问题是,我似乎无法使对齐正确。这就是我所拥有的:
以下是我设计的线框以及上面的内容:
日期和时间都可以。首先,只是Correct 20
和Incorrect 18
的对齐方式它们应该与右边对齐。第二,thumbs up
和thumbs 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>
答案 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的权重。像这样:
或者您可以尝试GridLayout或Support 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,因为您的活动确实需要以这种方式组织数据。