使用具有调整和对齐问题的相对布局
Using relative layout with adjustment and alignment issues
Android Studio 1.2
你好,
我有这个相对布局,它将成为列表视图中的一行。所以我想保持相对布局以提高性能,因为会有很多滚动。
问题,我似乎无法正确对齐。这就是我所拥有的:
下面是我设计的线框,上面应该是这样的:
日期和时间没问题。首先,只是 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>
将主要相对布局更改为 LinearLayout,并在 LinearLayout 内部使用如下相对布局
<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>
我会为 TextView 使用带有权重的 LinearLayout。像这样:
或者您可以尝试 GridLayout or 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
模式,我认为权重不会导致性能问题。
您可以在那里使用 GridLayout 或 TableLayout,因为您的 activity 确实需要以这种方式组织数据。
Android Studio 1.2
你好,
我有这个相对布局,它将成为列表视图中的一行。所以我想保持相对布局以提高性能,因为会有很多滚动。
问题,我似乎无法正确对齐。这就是我所拥有的:
下面是我设计的线框,上面应该是这样的:
日期和时间没问题。首先,只是 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>
将主要相对布局更改为 LinearLayout,并在 LinearLayout 内部使用如下相对布局
<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>
我会为 TextView 使用带有权重的 LinearLayout。像这样:
或者您可以尝试 GridLayout or 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
模式,我认为权重不会导致性能问题。
您可以在那里使用 GridLayout 或 TableLayout,因为您的 activity 确实需要以这种方式组织数据。