2012-11-07 83 views
1

我正在使用我的自定义列表的行布局。在这个布局中,我有一个图像在左边和右边的两个文本框在对方的顶部。我希望将顶部文本框分成两部分。就像这样:布局问题与自定义listitem

------------------------------- 
| | Topleft | Topright | 
|ICON|------------------------- 
| | bottom    | 
------------------------------- 

我已经有这样的:

<?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="?android:attr/listPreferredItemHeight" 
    android:padding="6dip"> 
    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_marginRight="6dip" 
     android:src="@drawable/ic_launcher" /> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="fill_parent"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1"> 

     <TextView 
      android:id="@+id/toptext" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
     /> 
     <TextView 
      android:id="@+id/toptext2" 
      android:layout_width="0dip" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
     /> 
     </LinearLayout> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:id="@+id/bottomtext" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
     /> 
    </LinearLayout> 
</LinearLayout> 

但是,这是行不通的。我只用一个toptext而不是两个工作。任何人都可以告诉我我做错了什么?

回答

1

只需将LinearLayout的orientationtopTexttopText2更改为"horizontal"即可。由于"horizontal"是默认的方向,你可以删除整个属性:如果你是不是在你的TextViews使用长字符串

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="0dip" 
    android:layout_weight="1"> 

但是,您可能能够使用一个RelativeLayout的而不是三个LinearLayouts。

+0

谢谢,这确实是工作。你为什么强烈推荐RelativeLayout? – Siddler

+0

写作后,我只注意到了'layout_weight'的大量使用...但是您可以使用1个RelativeLayout而不是3个LinearLayout来实现相同的结果,这完全取决于您在每个TextView中放置的文本的长度。 – Sam