我有以下布局(为了简洁起见,我删除了不同的属性):
<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而不管滚动。
答案 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>