Android ListView滚动整个屏幕

时间:2016-12-05 12:54:18

标签: android list listview scroll scrollable

我创建了一个包含许多线性布局的布局,我在其中一个线性布局中并排设置了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>

3 个答案:

答案 0 :(得分:0)

我猜你的LinearLayout之一位于ScrollView。所以删除ScrollView。

答案 1 :(得分:0)

尝试在包含这些Listviews的活动中添加以下下面的代码:

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;
    }

答案 2 :(得分:0)

我已经弄明白了。显然,布局&#34;继续&#34;超越屏幕。我只是添加了一些元素来测试它是否滚动,但实际上,只有第三个列表滚动而另外两个不是因为第三个列表有更多的元素,它超出了它的限制。这就是它滚动的原因。

我等同于&#34;走出屏幕&#34;我认为列表应该滚动,但这只是一个设计问题 - 操作系统并不认为列表已经离开了屏幕。

只要我将更多元素放入其他两个列表中,它们就会全部滚动。