Android - 没有 ScrollBar 的滚动
Android - Scrolling without a ScrollBar
我有以下布局(为简洁起见,我删除了不同的属性):
<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。
我认为使布局可滚动的唯一方法是将所有内容放入 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>
在垂直滚动条内使用垂直滚动条总是很麻烦,可能根本行不通,但你可以检查一下LINK
你也可以使用 listView.requestDisallowInterceptTouchEvent(false)
.
在 ScrollView
中包含 ListView
会给你带来很多麻烦。而是只在布局
中保留 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()
。
我有以下布局(为简洁起见,我删除了不同的属性):
<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。
我认为使布局可滚动的唯一方法是将所有内容放入 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>
在垂直滚动条内使用垂直滚动条总是很麻烦,可能根本行不通,但你可以检查一下LINK
你也可以使用 listView.requestDisallowInterceptTouchEvent(false)
.
在 ScrollView
中包含 ListView
会给你带来很多麻烦。而是只在布局
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()
。