如何让我的ListView滚动?

Tha*_*e90 13 android listview scrollable

我有一个非常复杂的View构建,作为其中的一部分,我在ScrollView中的LinearLayout内部有一个ListView(还有很多组件,但在这个问题上它们并不重要).

现在整个活动滚动得很好,但ListView的高度有限,当它里面的项目超过高度时,我的屏幕消失了.我试图将ListView放在它自己的ScrollView中,但这不起作用.当我尝试在ListView上滚动时,选择了主ScrollView并且我的屏幕滚动而不是ListView.

我的问题可能听起来很简单,但我无法解决这个问题......是否有可能使ListView可滚动?

相关的XML:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

    <LinearLayout android:id="@+id/GlobalLayout" 
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="vertical" >

        <ListView android:id="@+id/EndpointList"
                  android:choiceMode="multipleChoice"
                  android:layout_height="175dip"
                  android:layout_width="fill_parent" />

    </LinearLayout>

</ScrollView>
Run Code Online (Sandbox Code Playgroud)

paw*_*eba 23

而不是使用ScrollView中的其他布局的ListView创建一个带有页眉和页脚的ListView.

添加应该在ListView上方的视图作为标题:

addHeaderView(View v)
Run Code Online (Sandbox Code Playgroud)

以下作为页脚:

addFooterView(View v)
Run Code Online (Sandbox Code Playgroud)

将ListView上方的所有内容放入ListView的标题中,并将其与页脚相同.

    LayoutInflater inflater = LayoutInflater.from(this);
    mTop    = inflater.inflate(R.layout.view_top, null);
    mBottom = inflater.inflate(R.layout.view_bottom, null);

    list.addHeaderView(mTop);
    list.addFooterView(mBottom);
    // add header and footer before setting adapter
    list.setAdapter(mAdapter);
Run Code Online (Sandbox Code Playgroud)

结果你会得到一个可滚动的视图.


Tha*_*e90 4

实际上,我设置它的方式确实有效......将 ListView 放置在 ScrollView 内的 LinearLayout 中。只要避免 ListView 是 ScrollView 的直接子级,它就会很好地工作......

请注意,如果 ListView 中没有足够的项目来填充它,那么它就会“离开屏幕”,它不会滚动(尽管从逻辑上讲)。另请注意,当您有足够的项目可供滚动时,您需要按住 ListView 中的某个项目才能使其滚动,并且有一半的时间,焦点会分配给全局滚动视图而不是 ListView...避免这种情况(大多数情况下),持续按住最上面或最下面的项目,具体取决于您想要滚动的方式。这将优化您将焦点集中在 ListView 上的机会。

我已经制作了一个视频,现在正在将其上传到 YouTube...

视频为http://www.youtube.com/watch?v=c53oIg_3lKY。质量有点差,但这证明了我的观点。

只是为了全局概览,我使用 ScrollView 来滚动整个 Activity,使用 LinearLayout 来实现 Activity 的布局,并使用 ListView 来制作列表......