2011-08-23 101 views
1

我有具有以下设计Android的列表项布局

+------+------------------------------------+ 
| Z1 | Z2        | 
|  |         | 
+------+------------------------------------+ 

是Z1的ImageView的元素和Z2一个TextView元素的简单ListActivity的实现。这是我的标记

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <ImageView android:id="@+id/icon" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:src="@drawable/icon" /> 
    <TextView android:id="@+id/sectionTitle" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:textStyle="bold" /> 
</LinearLayout> 

如何更改我的标记以获取设计,如下面的示例中添加一个其他元素?

+------+------------------------------------+ 
| Z1 | Z2        | 
+  +------------------------------------+ 
|  | Z3 (New TextView)     | 
|  |         | 
+------+------------------------------------+ 

回答

1

最好的选择是将您的布局更改为相对布局。

使Z1对齐父亲左侧顶部和底部,并指定其重心居中,和垂直居中(父母内)。

Z2应位于Z1的左侧并与父母的顶端对齐。

Z3应该左对齐Z2和Z2以下。

我使用的所有这些“规则”都是在相对布局中指定的。

更多信息:RelativeLayout documentationsample tutorial

1

我会使用一个LinearLayout,但使用带有TextView的嵌套LinearLayout。这里是一个示例XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 
    <ImageView android:id="@+id/catch_image" 
       android:layout_width="60dip" 
       android:layout_height="60dip"/> 
    <LinearLayout android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" 
        android:layout_weight="1"> 
     <TextView android:id="@+id/catch_species" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"/> 
     <TextView android:id="@+id/catch_datetime" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"/> 
    </LinearLayout> 
</LinearLayout> 
1

我想你需要熟悉相对布局。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <ImageView android:id="@+id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="25dip" 
    /> 
    <TextView android:id="@+id/title" 
     android:layout_toRightOf="@id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/icon"  
    /> 
    <TextView android:id="@+id/description" 
     android:layout_toRightOf="@id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/icon"  
    /> 
</RelativeLayout> 

这样的事情会起作用。