2011-11-06 68 views
1

我有一个ListView与适配器呈现的自定义视图。它包含一个图像,一些文本和另一个ListView。在适配器I的创建者的getView方法中,另一个适配器设置嵌入的ListView。嵌入在另一个ListView高度不包装的Android ListView

它一切正常,但由于某种原因,嵌入ListView的高度只能查看一个列表项。如果我手动将高度设置为像素,我可以在列表中看到更多项目。所有高度都设置为wrap_content,所以我不确定它为什么不起作用。

我第一次的ListView看起来像这样:

<ListView 
    android:id="@+id/newswire" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:cacheColorHint="#ffffff" 
/> 

是被渲染为这个ListView中的项目:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dp" 
    > 

     <ImageView 
      android:id="@+id/aggSparkAvatar" 
      android:layout_width="45dp" 
      android:layout_height="45dp" 
      android:scaleType="centerCrop" 
     /> 

    <LinearLayout 
     android:orientation="vertical" 
     android:paddingLeft="10dp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    > 

     <TextView 
       android:id="@+id/aggSparkName" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textColor="#1B5F7C" 
       android:textStyle="bold" 
     /> 

     <TextView 
       android:id="@+id/aggSparkDateStamp" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textColor="#000000" 
       android:textStyle="bold" 
     /> 

     <View 
      android:layout_height="1dp" 
      android:layout_width="fill_parent" 
      android:background="#F2F2F2"    
     /> 

     <ListView 
      android:id="@+id/aggSparkList" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:cacheColorHint="#ffffff" 
     /> 

    </LinearLayout> 

</LinearLayout> 

然后嵌入式ListView的每个项目看起来是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dp" 
    > 

     <ImageView 
      android:id="@+id/sparkAvatar" 
      android:layout_width="45dp" 
      android:layout_height="45dp" 
      android:scaleType="centerCrop" 
     /> 

    <LinearLayout 
     android:orientation="vertical" 
     android:paddingLeft="10dp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    > 
     <TextView 
      android:id="@+id/sparkTitle" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#000000" 
      android:textStyle="bold" 
     /> 

     <TextView 
      android:id="@+id/sparkText" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#000000" 
     /> 

     <TextView 
      android:id="@+id/sparkDateStamp" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textColor="#A2A2A2" 
     /> 

    </LinearLayout> 

</LinearLayout> 

回答

0

在另一个可滚动视图中包含可滚动视图绝不是一个好习惯。你应该考虑重新设计你的应用程序。

在你的情况下,你嵌入的ListView设置为wrap_content, wrap_content - 也不是推荐的做法。一个ListView被设计为显示一个项目的列表,这些项目的集合对于屏幕一次显示来说太大了。使用wrap_content, wrap_content没有多大意义。

+0

谢谢,我只使用嵌入的ListView,因为我有另一个活动,只是使用该视图,所以认为我只是重用它。你的权利,在这种情况下,我应该只是使用几个线性布局,因为我只想显示嵌入式ListView的2个项目。 – Joe