【问题标题】:Horizontal Scrollview containing a LinearLayout with a Listview包含带有 Listview 的 LinearLayout 的水平滚动视图
【发布时间】:2014-07-23 19:47:37
【问题描述】:

我有 LinearLayout,它的层次结构如下所示:HorizontalScrollview 作为根,它包含一个垂直的LinearLayout,在其中包含一个水平的LinearLayout 作为标题(使用TextViews 制作)和一个ListView 只是下面。

基本上,这个想法是提供一个水平滚动(因为 ListView 已经有它的垂直滚动)。我几乎明白了,问题是 ListView 没有扩展它的宽度以适应内容。

这是布局的代码:

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/hscrollMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/LinearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="170dp"
                android:layout_height="wrap_content"
                android:text="@string/fecha"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvFechaDet"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:text="@string/tipo"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvTipoEvtDet"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/descripcion"
                android:textStyle="bold" />
        </LinearLayout>

        <ProgressBar
            android:id="@+id/pbEventListing"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:indeterminate="true"
            android:visibility="gone" />

        <ListView
            android:id="@+id/lvEventos"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </ListView>
    </LinearLayout>
</HorizontalScrollView>

我正在为列表项使用带有自定义布局的自定义 ArrayAdapter,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tvFechaEvtItem"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:text="@string/fecha" />

    <ImageView
        android:id="@+id/ivEstadoEvtItem"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:contentDescription="@string/estado"
        android:scaleType="fitXY"
        android:src="@drawable/ic_warning" />

    <TextView
        android:id="@+id/tvTipoEvtItem"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:text="@string/tipo" />

    <TextView
        android:id="@+id/tvDescEvtItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:text="@string/descripcion" />

</LinearLayout>

PD:是的,我成功地使用 SO 编辑器格式化了代码,last time 我把它搞砸了 xD。

【问题讨论】:

    标签: android android-layout listview android-listview android-scrollview


    【解决方案1】:

    可能是您将第一个 LinearLayout 宽度设置为换行内容。尝试将其更改为 match_parent

    <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/hscrollMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <LinearLayout
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ...
    

    【讨论】:

    • Eclipse 说:“ScrollView 子项必须在滚动维度中将其 layout_width 或 layout_height 属性设置为 wrap_content 而不是 fill_parent 或 match_parent” 所以这不是一个选项,还有其他建议吗?也许我可以在 DP 中添加一个宽度到 ListView,我会尝试一下。
    • 如果这不起作用,请尝试将水平滚动视图的布局宽度更改为硬编码值或 fill_parent
    • 是的,我硬编码了ListView 的宽度,这不是最好的选择,但它是我所拥有的最好的。在任何情况下都有一个DetailActivity 显示特定项目的信息,因此如果信息不适合ListView,用户可以通过转到该项目的详细信息来查看它。
    猜你喜欢
    • 1970-01-01
    • 2013-03-07
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多