我注意到Google应用程序中的抽屉是可滚动的,但我不能出于某种原因得出如何实现可滚动的DrawerLayout的结论.我尝试使用以下设计范例构造布局文件.
<androID.support.v4.Widget.DrawerLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/drawerLayout" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:ID="@+ID/frameLayout" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:context=".mainScreen"> <!-- Layout of Activity --> </FrameLayout> <!-- DrawerLayout segment --> <ScrollVIEw androID:ID="@+ID/scrollVIEw" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <linearLayout androID:ID="@+ID/drawerlinearLayout" androID:orIEntation="vertical" androID:layout_wIDth="260dp" androID:layout_height="match_parent" androID:layout_gravity="start|bottom" androID:layout_margintop="?androID:attr/actionbarSize" androID:divIDer="@androID:color/transparent" androID:divIDerHeight="0dp" androID:background="#77000000"> <!-- Layout of Drawer --> </linearLayout> </ScrollVIEw> </androID.support.v4.Widget.DrawerLayout>
但是,无论有没有ScrollVIEw,当抽屉超出屏幕末端时,抽屉只会在底部切断物品.我无法启用任何形式的滚动.不确定我缺少什么或需要启用.我们将不胜感激.
DrawerLayout段中的linearLayout包含不同的样式视图.一个视图仅显示标题,下方有一个分隔符,一个显示带有文本旁边的图像视图,另一个显示带有内置于该行的开关的标题.因此,如果在XML编码布局文件之外完成,则需要考虑多个样式的视图.
解决方法:
虽然使用ListVIEw是一个有效的选项,但对我来说,尝试和解决我已经在上面的ScrollVIEw之间为我的布局构建了如此大的XML文件的情况非常有用.事实证明,为了使其按预期工作,只需要进行一些小的修改.构建的最新布局文件如下:
<androID.support.v4.Widget.DrawerLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/drawerLayout" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:ID="@+ID/frameLayout" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:context=".mainScreen"> <!-- Layout of Activity --> </FrameLayout> <!-- DrawerLayout segment --> <ScrollVIEw androID:ID="@+ID/scrollVIEw" androID:layout_wIDth="260dp" androID:layout_height="match_parent" androID:layout_gravity="start|bottom" androID:layout_margintop="?androID:attr/actionbarSize"> <linearLayout androID:ID="@+ID/drawerlinearLayout" androID:orIEntation="vertical" androID:layout_wIDth="260dp" androID:layout_height="wrap_content" androID:divIDer="@androID:color/transparent" androID:divIDerHeight="0dp" androID:background="#77000000"> <!-- Layout of Drawer --> </linearLayout> </ScrollVIEw> </androID.support.v4.Widget.DrawerLayout>
主要修改要求我改变重力和边缘存在的位置.重力需要在周围的ScrollVIEw中,否则会导致在某些情况下没有滚动或实际崩溃的奇怪行为.然后需要将内部布局更改为“换行内容”.
如果边距也未移入ScrollVIEw,则显然不会向下滚动到底部.它在底部留下了未滚动的卷轴边缘.一旦解决了这个问题,DrawerLayout就像预期的那样工作. ListVIEw选项也提出了另一种使用方法,但正如此处所提到的,值得我再分析一下,重新使用我已编写过的代码;特别是需要在视图中处理的几个不同的自定义视图.
总结以上是内存溢出为你收集整理的android – DrawerLayout不滚动全部内容,希望文章能够帮你解决android – DrawerLayout不滚动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)