在我的屏幕上,我有一个列表视图和一个按钮。我的清单有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>
答案 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;
}
如果这可以解决您的问题,请告诉我?