列表视图不可滚动

时间:2012-09-06 09:07:51

标签: android

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background"
    android:orientation="vertical" >

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="fill_parent" >

        <RelativeLayout
            android:id="@+id/relativeLayout2"
            android:layout_width="fill_parent"
            android:layout_height="600dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" >

            <include
                android:id="@+id/include1"
                android:layout_width="fill_parent"
                android:layout_height="70dp"
                layout="@layout/header_history" >
            </include>

            <ListView
                android:id="@android:id/list"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:cacheColorHint="#00000000"
                android:divider="@android:color/black"
                android:dividerHeight="1.0sp"
                android:textColor="#000000" />
        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

header_history

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/button" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/button"
        android:gravity="left|center_vertical"
        android:text="   History"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@android:color/white"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

我正在尝试使列表视图可滚动但它已变为可滚动但我无法找到列表视图的详细信息。请帮我一样。朋友们,我也更新了header_history文件。

3 个答案:

答案 0 :(得分:0)

我只回答了类似的问题。在这里,我向你解释为什么它不滚动?

只需从布局中删除ScrollView即可。并且,将LinearLayout设为父级。并且,尝试运行您的应用程序。它会滚动列表。

因为ListView类实现了自己的滚动,它只是不接收手势,因为它们都由父ScrollView处理我强烈建议你以某种方式简化你的布局。例如,您可以将要滚动的视图添加到ListView作为页眉或页脚。

查看this

查看我现有的answer

答案 1 :(得分:0)

您不应该将ListView放在ScrollView中,因为ListView类实现了自己的滚动,它只是不接收手势,因为它们都由父ScrollView处理。

使TextView可滚动。

只需设置

即可
android:maxLines = "AN_INTEGER"

android:scrollbars = "vertical"

布局的xml文件中TextView的属性。

然后使用:

yourTextView.setMovementMethod(new ScrollingMovementMethod())

代码。

答案 2 :(得分:0)

问题是您在ListView中加了ScrollView。 Android API说你永远不应该在另一个可滚动元素中放置一个可滚动元素。

如果您还需要这样做,您可以通过继承ListView并覆盖onMeasure()方法来解决问题。

编辑:使用以下代码创建完全展开的列表。另外值得注意的是,由于性能原因,这对于大型列表来说可能是一个可怕的想法。

public class FullExpandedListView extends ListView {

    public FullExpandedListView(Context context) {
        super(context);
    }

    @Override
    protected void onMeasure(int a, int b) {
        super.onMeasure(a, b);

        setListViewHeightBasedOnChildren();
    }

    private void setListViewHeightBasedOnChildren() {

        SwfListAdapter listAdapter = (SwfListAdapter) getAdapter();

        if (listAdapter == null) {

            return;
        }

        int totalHeight = 0;
        int desiredWidth = MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST);

        for (int i = 0; i < listAdapter.getCount(); i++) {

            View listItem = listAdapter.getView(i, null, listControl);
            listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listControl.getLayoutParams();
        params.height = totalHeight + (listControl.getDividerHeight() * (listAdapter.getCount() - 1));
        setLayoutParams(params);
    }
}