Android - 没有ScrollBar的滚动

时间:2015-06-24 07:49:18

标签: android android-layout android-linearlayout android-xml android-relativelayout

我有以下布局(为了简洁起见,我删除了不同的属性):

<RelativeLayout>
    <LinearLayout>
        <android.support.v7.widget.Toolbar/>
        <LinearLayout android:id="@+id/item1"/>
        <LinearLayout android:id="@+id/item2"/>
        <LinearLayout android:id="@+id/item3"/>
        <ListView/>
    </LinearLayout>
    <android.support.design.widget.FloatingActionButton/>
</RelativeLayout>

我试图让整个页面可滚动。目前,只有ListView滚动。不知道该怎么办?请注意,由于我嵌入了ListView,因此无法使用ScrollView。此外,外部元素必须是RelativeLayout,因为我需要修复FloatingActionButton而不管滚动。

3 个答案:

答案 0 :(得分:3)

ListView内设ScrollView会给您带来很多麻烦。而是只在您的布局中留下ListView

<RelativeLayout>
    <LinearLayout>
        <android.support.v7.widget.Toolbar/>
        <ListView/>
    </LinearLayout>
    <android.support.design.widget.FloatingActionButton/>
</RelativeLayout>

并将您的LinearLayouts移到单独的文件中(例如 header.xml

<LinearLayout>
    <LinearLayout android:id="@+id/item1"/>
    <LinearLayout android:id="@+id/item2"/>
    <LinearLayout android:id="@+id/item3"/>
</LinearLayout>

然后,您可以使用

将布局作为标题添加到ListView
ListView listView = (ListView) findViewById(R.id.list);
View header = LayoutInflater.from(context).inflate(R.layout.header, listView, false);
listView.addHeaderView(header); // call before you set adapter!

现在整个视图都可以滚动。如果您使用onItemClickListener,请不要忘记索引已移动listView.getHeaderViewsCount()

答案 1 :(得分:0)

在垂直可滚动内部使用垂直滚动总是很乱,可能不起作用,但你可以chceck LINK

您也可以使用listView.requestDisallowInterceptTouchEvent(false)

答案 2 :(得分:-1)

我认为使布局可滚动的唯一方法是将所有内容放入ScrollView,例如:

<RelativeLayout>
    <ScrollView android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout>
            <android.support.v7.widget.Toolbar/>
            <LinearLayout android:id="@+id/item1"/>
            <LinearLayout android:id="@+id/item2"/>
            <LinearLayout android:id="@+id/item3"/>
            <ListView/>
        </LinearLayout>
        <android.support.design.widget.FloatingActionButton/>
    </ScrollView>
</RelativeLayout>