【问题标题】:Android ListView embedded within another ListView height not wrapping嵌入在另一个 ListView 高度中的 Android ListView 不换行
【发布时间】:2011-11-06 12:13:37
【问题描述】:

我有一个由适配器呈现的带有自定义视图的 ListView。它包含一个图像、一些文本和另一个 ListView。在适配器的 getView 方法中,我创建了另一个适配器来设置嵌入式 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>

【问题讨论】:

    标签: android android-layout android-listview


    【解决方案1】:

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

    在您的情况下,您嵌入的 ListView 设置为 wrap_content, wrap_content - 也不是推荐的做法。 ListView 旨在显示项目列表,这些项目总体上对于屏幕来说太大而无法立即显示。使用wrap_content, wrap_content 没有多大意义。

    【讨论】:

    • 谢谢,我只使用了嵌入式 ListView,因为我有另一个活动只使用该视图,所以我想我只是重用它。你的权利,在这种情况下,我应该只使用几个线性布局,因为我只想为嵌入式 ListView 显示 2 个项目。
    猜你喜欢
    • 2020-07-09
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2012-05-24
    • 2015-11-28
    • 2011-08-22
    相关资源
    最近更新 更多