1

在我的屏幕上,我有一个列表视图和一个按钮。我的清单有 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>
4

3 回答 3

2

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

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

于 2010-10-22T19:29:47.337 回答
1

Scythe 回答了我的问题,但我想要列表下方不止一个控件,也在另一个屏幕上我想要 2 个列表。因此,为了让滚动条与列表视图一起使用,我必须修复列表的高度。

于 2010-10-24T04:10:03.390 回答
0

如果您的问题是 ListView 没有在 ScrollView 内滚动,这里是处理此问题的解决方案。

实现您自己的扩展 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; }

让我知道这是否解决了您的问题?

于 2013-09-14T14:57:48.050 回答