列表内滚动视图

时间:2010-10-22 19:05:27

标签: android list scroll scrollview

在我的屏幕上,我有一个列表视图和一个按钮。我的清单有8个项目。如果这两个项目都不适合我想要我的屏幕滚动。我不希望我的列表有滚动但完整的布局包括列表和放大器。按钮。如果我使用下面的布局,它只显示列表中的项目,我必须在列表中滚动才能转到下一个项目。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent" >
<LinearLayout
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">

        <ListView android:id="@android:id/list"
            android:layout_height="wrap_content" android:layout_width="fill_parent"
            android:background="@drawable/round_background" />

        <Button android:text="Search" android:id="@+id/carSearchButton"
            android:layout_gravity="center_horizontal" android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>

3 个答案:

答案 0 :(得分:2)

您不能将ListView放在ScrollView中。 GridView或任何处理与ScrollView在同一轴上滚动的视图。这样,框架就不知道哪个View应该处理滚动事件。编译时,此布局不会产生错误,但无法正常工作。

你应该在这里做什么:转储外部ScrollView,你不需要它。只使用ListView,并使用.addFooter()将按钮添加到ListView,这是最简单的方法。这样,您的按钮将显示为列表元素,但您不必使用自定义适配器。

答案 1 :(得分:1)

狡猾的回答我的问题,但我想在列表下面还有一个控件,在另一个屏幕上我想要2个列表。因此,为了使滚动条与列表视图一起工作,我必须修复列表的高度。

答案 2 :(得分:0)

如果你的问题是ListView没有在ScrollView中滚动, 这是解决这个问题的方法。

实现自己的listview扩展ListView类并在其中实现以下方法。

 

@Override public boolean onTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: // Disallow ScrollView to intercept touch events. this.getParent().requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_UP: // Allow ScrollView to intercept touch events. this.getParent().requestDisallowInterceptTouchEvent(false); break; } super.onTouchEvent(ev); return true; }

如果这可以解决您的问题,请告诉我?