Android ListView滚动整个屏幕
Android ListView scrolls the entire screen
我创建了一个包含许多线性布局的布局,并且在其中一个线性布局中并排设置了 3 个 ListView。我想让它们中的每一个都可以滚动,但是非常独特。例如,我希望能够滚动其中之一而不影响其他任何内容。
现在,如果我为任何一个列表设置 "android:nestedScrollingEnabled="true"",整个屏幕都会滚动。我希望列表的滚动仅限于列表所在的布局(这样我可以滚动列表并且屏幕的其余部分保持原位)。
我该怎么做?到目前为止,它要么根本不滚动,要么滚动整个屏幕。我只想滚动列表。
谢谢!
PS:下面是 XML 的相关部分(没什么特别的):
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginBottom="@dimen/list_vertical_margin">
<ListView
android:id="@+id/realtime_vehicle_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<ListView
android:id="@+id/realtime_errors_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<ListView
android:id="@+id/realtime_depot_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
我猜你的 LinearLayout
之一在 ScrollView
中。所以删除 ScrollView.
尝试在包含这些列表视图的 activity 中添加以下代码:
ListView mylistview = (ListView) findViewById(R.id.mylistview);
mylistview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
我已经弄明白了。显然,布局 "continues" 超出了屏幕。我只是多放了几个元素来测试它是否滚动,但实际上,只有第三个列表滚动而其他两个不滚动的原因是因为第三个列表的元素更多,并且超出了它的限制。这就是它滚动的原因。
我将 "going out of the screen" 等同于列表应该滚动的想法,但这只是一个设计问题 - 操作系统认为列表不会离开屏幕。
当我将更多元素放入其他两个列表时,它们现在都在滚动。
我创建了一个包含许多线性布局的布局,并且在其中一个线性布局中并排设置了 3 个 ListView。我想让它们中的每一个都可以滚动,但是非常独特。例如,我希望能够滚动其中之一而不影响其他任何内容。
现在,如果我为任何一个列表设置 "android:nestedScrollingEnabled="true"",整个屏幕都会滚动。我希望列表的滚动仅限于列表所在的布局(这样我可以滚动列表并且屏幕的其余部分保持原位)。
我该怎么做?到目前为止,它要么根本不滚动,要么滚动整个屏幕。我只想滚动列表。
谢谢!
PS:下面是 XML 的相关部分(没什么特别的):
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginBottom="@dimen/list_vertical_margin">
<ListView
android:id="@+id/realtime_vehicle_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<ListView
android:id="@+id/realtime_errors_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<ListView
android:id="@+id/realtime_depot_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
我猜你的 LinearLayout
之一在 ScrollView
中。所以删除 ScrollView.
尝试在包含这些列表视图的 activity 中添加以下代码:
ListView mylistview = (ListView) findViewById(R.id.mylistview);
mylistview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
我已经弄明白了。显然,布局 "continues" 超出了屏幕。我只是多放了几个元素来测试它是否滚动,但实际上,只有第三个列表滚动而其他两个不滚动的原因是因为第三个列表的元素更多,并且超出了它的限制。这就是它滚动的原因。
我将 "going out of the screen" 等同于列表应该滚动的想法,但这只是一个设计问题 - 操作系统认为列表不会离开屏幕。
当我将更多元素放入其他两个列表时,它们现在都在滚动。