1

我有一个场景,我有两个列表视图,一个在另一个之上,我试图让它滚动顶部列表直到它到达该列表的底部,然后进入第二个列表。

这是我拥有的 XML,您可以看到它们都设置为包装内容。它确实滚动,但只显示每个列表视图中的 1 个选项,而不是所有内容。

<ScrollView
    android:id="@+id/scrllArea"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@+id/bottombar" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/topbar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/tvTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:text="{0} Issues"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <ListView
                android:id="@+id/lvIssues"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawSelectorOnTop="false" >
            </ListView>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/topbar2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/tvTitle2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:text="{0} Issues"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <ListView
                android:id="@+id/lvNewIssues"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:drawSelectorOnTop="false" >
            </ListView>
        </LinearLayout>
    </LinearLayout>
</ScrollView>
4

1 回答 1

4

建议您不要将一个滚动组件放在另一个滚动组件中。但是,如果您需要ListView此布局中的 s,则可以解决此问题。他们不会滚动。它们将展开到全高,以便所有项目都可见。

在名为 UI(或您选择的任何其他名称)的新包中创建一个新类并粘贴以下内容:

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.ListView;

public class ExpandedListView extends ListView 
{
    private android.view.ViewGroup.LayoutParams params;
    private int oldCount = 0;

    public ExpandedListView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        if (getCount() != oldCount) 
        {
            int height = getChildAt(0).getHeight() + 1 ;
            oldCount = getCount();
            params = getLayoutParams();
            params.height = getCount() * height;
            setLayoutParams(params);
        }

        super.onDraw(canvas);
    }
}

现在定义ListViews如下:

        <com.example.UI.ExpandedListView <!--or whatever your package path name is -->
            android:id="@+id/lvIssues"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:drawSelectorOnTop="false" >
        </ListView>


        <com.example.UI.ExpandedListView
            android:id="@+id/lvNewIssues"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="true"
            android:drawSelectorOnTop="false" >
        </ListView> 

请注意,高度属性设置为 fill_parent。由于我们onDraw()ExpandedListView.

然而,我再重复一遍;如果您可以重新考虑其他一些布局,请这样做,因为您提供的布局不可取。

祝你好运。

于 2013-09-12T12:57:21.687 回答