Android 列表包装内容

Posted

技术标签:

【中文标题】Android 列表包装内容【英文标题】:Android List wrap content 【发布时间】:2013-01-07 10:23:52 【问题描述】:

我正在动态创建一些TextViewImageViewhtmlView 并将其添加到以下布局中。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parent"
    android:layout_
    android:layout_
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/ad_space"
        android:layout_
        android:layout_
        android:background="@drawable/navigation_bar"
        android:visibility="gone" >
    </LinearLayout>

    <ViewFlipper
        android:id="@+id/viewflipper"
        android:layout_
        android:layout_
        android:layout_weight="1" >

        <ScrollView
            android:id="@+id/quiz_scroll_view"
            android:layout_
            android:layout_ >

            <LinearLayout
                android:id="@+id/quizView"
                android:layout_
                android:layout_
                android:orientation="vertical" >

                <LinearLayout
                    android:id="@+id/answer_layout"
                    android:layout_
                    android:layout_
                    android:orientation="vertical" />
            </LinearLayout>
        </ScrollView>

        <ScrollView
            android:id="@+id/quiz_scroll_viewTwo"
            android:layout_
            android:layout_ >

            <LinearLayout
                android:id="@+id/quizViewTwo"
                android:layout_
                android:layout_
                android:orientation="vertical" >

                <LinearLayout
                    android:id="@+id/answer_layoutTwo"
                    android:layout_
                    android:layout_
                    android:orientation="vertical" />
            </LinearLayout>
        </ScrollView>
    </ViewFlipper>
</LinearLayout>

QuizView 中,我在运行时添加了一些与问题相关的视图,对于答案,我正在创建一个列表视图运行时并添加到answer_layout。我正在使用BaseAdapter 根据情况创建ListView 运行时。

但是我的ListView 没有显示所有内容,它只显示第一个单元格。

我已经像这样添加ListView

ListView ansList = new ListView(Test.this);
ansList.setAdapter(adapter);
ansList.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
ansCellLayout.addView(ansList);

它只显示一个列表单元格。

如果我为高度设置了一些int 值,那么它的显示所有列表包含。

ansList.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 600));

但我不能硬编码列表视图高度,因为我的内容是动态的。

在这种情况下如何将列表视图设为WRAP_CONTENT

【问题讨论】:

尝试我发布的解决方案。 【参考方案1】:

根据this Google I/O 2010 视频中看到的 Android 开发人员的说法,不能将 ListView 的高度设置为 wrap_content。如果是 ,则考虑前三个子元素的高度。其他的根本不包括在内。

尝试在运行时设置 ListView 的高度。或者最好将其设置为 FILL_PARENT。

【讨论】:

是的,我尝试过使用 FILL_PARENT 但它不起作用,我正在尝试设置高度运行时。【参考方案2】:

从文档中ListView

在垂直滚动列表中显示项目的视图

所以它不应该与WRAP_CONTENT 一起使用,而是在其中有一个固定的高度和滚动内容。

为此,您最好使用垂直的LinearLayout

【讨论】:

我使用过 LinearLayout 但问题是,我在运行时添加了不同的视图,如文本视图、Web 视图等。我遇到了很多关于 webview 的问题,比如设置 Webview 高度,我需要为 textview 使用两个不同的侦听器 onclick ,为 webview 使用 onch ,多个 web view schooling,所以我选择 listview ,它解决了很多问题,如滚动、侦听器等。 您希望列表可滚动还是包裹内容? 我想要列表视图 jsut 显示他的所有单元格,目前它只显示一个单元格,如果我设置高度然后它显示所有单元格,而不是设置高度,它显示从他的内容中获取高度。所以我正在使用包装内容 这意味着您不需要滚动列表,对吧? 是的,我不需要滚动列表。

以上是关于Android 列表包装内容的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何将 LinearLayout 的内容垂直包装在 TableRow 中?

包装在 Horizo​​ntalScrollView 中的 Android Listview 高度不正确,其中列表项的高度不同

Android:以编程方式添加Textview,而不是将文本包装到下一行

如何在android中设置带有包装内容的最大高度?

设置自定义对话框的宽度以包装内容android

Android 矢量资产:dp 测量是不是只对“包装内容”重要?