2011-04-01 127 views
2

我不完全得到我的列表视图项目的布局并不像我想要的那样。 我希望somone会给我一些提示,因为我现在不能使它工作一段时间。 我要的是如下:Android自定义ListViewItem布局

enter image description here

这里是我的方法:

<?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="20dip" 
android:padding="6dip"> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="3dip"> 
     <TextView 
      android:id="@+id/nametext" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
     /> 
</LinearLayout> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="7dip"> 
     <ImageView 
      android:id="@+id/photo" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_marginRight="6dip" 
      android:src="@drawable/icon" /> 
     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="0dip" 
      android:layout_weight="1" 
      android:layout_height="fill_parent"> 
      <TextView 
       android:id="@+id/toptext" 
       android:layout_width="fill_parent" 
       android:layout_height="0dip" 
       android:layout_weight="1" 
       android:gravity="center_vertical" 
      /> 
      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="0dip" 
       android:layout_weight="1" 
       android:id="@+id/middletext" 
       android:singleLine="true" 
       android:ellipsize="marquee" 
      /> 
      <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> 
     <ImageView 
      android:id="@+id/stars" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_marginLeft="6dip" 
      android:src="@drawable/icon" /> 
</LinearLayout> 

任何帮助,将不胜感激。 我已经尝试了不同的尺寸和RelativeLayout。不用找了。 它看起来不像我认为它应该。

编辑3个空白失踪

EDIT2加入PIC

+0

对不起。整个XML代码在文本中,但它不会显示。请任何人都可以编辑,改变这一点,我不知道如何。看到完整的xml使用编辑模式。对造成的不便表示歉意。 – GuyFawkes 2011-04-01 15:05:48

回答

5

您可以用LinearLayouts做到这一点,但你需要三个嵌套布局:

  1. 垂直的LinearLayout包含一切。
  2. 从标题含有一切一边的水平的LinearLayout。
  3. 含有非标题TextViews垂直的LinearLayout。

内部垂直LinearLayout可能需要android:layout_weight="1",因此它会伸展以填充可用空间,但不会挤出右侧ImageView。

这一切都非常昂贵,特别是当乘以ListView中的众多视图时。一个RelativeLayout可以只用一个布局完成。

<?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="wrap_content" 
    android:padding="6dip" > 
    <TextView 
     android:id="@+id/textView1" 
     android:layout_alignParentTop="true" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical|center_horizontal" 
     android:textSize="40sp"> 
    </TextView> 
    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_below="@+id/textView1" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/icon" > 
    </ImageView> 
    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_below="@+id/textView1" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/icon" > 
    </ImageView> 
    <TextView 
     android:id="@+id/textView2" 
     android:layout_below="@+id/textView1" 
     android:layout_toRightOf="@+id/imageView1" 
     android:layout_toLeftOf="@+id/imageView2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:text="TextView" > 
    </TextView> 
    <TextView 
     android:id="@+id/textView3" 
     android:layout_below="@+id/textView2" 
     android:layout_toRightOf="@+id/imageView1" 
     android:layout_toLeftOf="@+id/imageView2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:text="TextView" > 
    </TextView> 
    <TextView 
     android:id="@+id/textView4" 
     android:layout_below="@+id/textView3" 
     android:layout_toRightOf="@+id/imageView1" 
     android:layout_toLeftOf="@+id/imageView2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:text="TextView" > 
    </TextView> 
</RelativeLayout> 

编辑的格式,并添加

这是结果。当然,文本和图像大小需要调整,但基本结果是你所描述的。

ListView screenshot

+0

我同意这个解决方案 – 2red13 2011-04-01 16:42:32

+0

非常感谢。正是我需要的。 – GuyFawkes 2011-04-05 08:18:48

0

林不知道,如果你真的想有一个3dip标题和内容7dip ... 如果你想外的LinearLayout里面的东西垂直排列,在父LinearLayout中使用

android:orientation="vertical" 

。要将三个项目排列在布局的内容部分中,可以使用android:weight或android:alignParentLeft/Right。

我怕林不知道你想做的事啥子,所以我不能编辑自己的布局:(

+0

嗨红。首先感谢编辑。我会添加一张图片来显示我想要的内容。是的我知道。所有像素值都是随机的。我摆弄了很多。给我一点时间做一点点。 – GuyFawkes 2011-04-01 15:26:42