0

在此处输入图像描述

我正在寻找用于在 android 中完成以下任务的最佳布局。这类似于将重复的行。

当前行由 5 个视图控件(两个图像和三个文本标签)组成。

我很确定我可以使用嵌套表格布局来处理它。然而,就我目前所读到的而言。使用相对布局可以更好地处理它。

有任何想法吗?如果您可以在帖子中包含示例布局,那就太好了。

谢谢,

4

2 回答 2

1

在大多数情况下,您应该使用相对布局。您可以使用以下属性在相对布局中定位视图

android:alignParentTop="true" // This puts the view at the top of the Relative Layout

或者

android:layout_below="@id/view" // This puts the view below another view

我现在无法对其进行测试,但这是我将如何使用相对布局来实现您的示例:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

    <ImageView
            android:id="@+id/ivBigImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
        android:src="@drawable/bigImage" 
            android:layout_centerVertical="true" />

        <ImageView
            android:id="@+id/ivSmallImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/smallImage"
            android:layout_toRightOf="@id/ivBigImage"/>

        <TextView 
            android:id="@+id/tvTextOne"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Plus"
            android:layout_toRightOf="@id/ivSmallImage" />

        <TextView 
            android:id="@+id/tvTextTwo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Google Plus"
            android:layout_toRightOf="@id/ivBigImage" 
            android:layout_below="@id/ivSmallImage/>

        <TextView 
            android:id="@+id/tvTextThree"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="use to do some social networking"
            android:layout_toRightOf="@id/ivBigImage" 
            android:layout_below="@id/tvTextTwo/>


</RelativeLayout>

当然你不应该像我在这个例子中那样对字符串进行硬编码:D

于 2013-11-02T02:15:41.633 回答
0

通常,我会使用 ListView,因为我可以为每一行动态地从另一个布局中添加更多项目。与 TableLayout 相比,使用 ListView 的好处是,如果行的内容超出了屏幕可以包含的内容,您仍然可以向下滚动屏幕。

但是您也可以用 ScrollView 包装 TableLayout 来实现相同的目的。

这只是关于你喜欢如何编码的偏好。在用户方面,您可以通过两种布局实现几乎相似的 UI 效果。

我做什么的例子:

1)在我的主要布局中,我有这个 ListView 作为容器。

<ListView android:id="@+id/summary" android:layout_width="match_parent" android:layout_height="match_parent" />

2) 然后我为将重复添加到 ListView 的每一行创建了另一个名为 row.xml 的布局。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dp">

<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:id="@+id/icon"
    android:layout_gravity="center_vertical|left"
    android:src="@drawable/green_alert"
    android:layout_marginRight="12dp"
    android:layout_marginLeft="6dp"/>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/tvPNO"
            android:layout_gravity="center_vertical"
            android:textStyle="bold"
            android:maxLines="1"
            android:ellipsize="end"
            android:text="PNO: 001.01"
            android:textColor="#C5EAF8" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:id="@+id/tvEntry"
            android:layout_gravity="center_vertical"
            android:gravity="right"
            android:textStyle="bold"
            android:maxLines="1"
            android:ellipsize="end"
            android:text="Entry: 1"
            android:textColor="#C5EAF8" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/tvDefoliator"
            android:layout_gravity="center_vertical"
            android:minLines="1"
            android:ellipsize="end"
            android:text="Defoliator: Mahasena Corbetti" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:id="@+id/tvLpF"
            android:layout_gravity="center_vertical"
            android:gravity="right"
            android:minLines="1"
            android:ellipsize="end"
            android:text="Larvae: 10" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="35"
            android:gravity="left">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/tvOryctes"
                android:layout_gravity="center_vertical"
                android:minLines="1"
                android:ellipsize="end"
                android:text="Oryctes: " />
            <CheckBox
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:focusable="false"
                android:clickable="false"
                android:id="@+id/cbOryctes" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="35"
            android:gravity="center">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/tvTermite"
                android:layout_gravity="center_vertical"
                android:minLines="1"
                android:ellipsize="end"
                android:text="Termite: "/>
            <CheckBox
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:focusable="false"
                android:clickable="false"
                android:id="@+id/cbTermite"/>
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="30"
            android:gravity="right">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/tvRat"
                android:layout_gravity="center_vertical"
                android:minLines="1"
                android:ellipsize="end"
                android:text="Rat: " />
            <CheckBox
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:focusable="false"
                android:clickable="false"
                android:id="@+id/cbRat" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

我在里面使用了 1 张图片和其他一些视图,它可能与您希望实现的相似。

于 2013-11-02T02:35:27.720 回答