
我正试图将导航抽屉放在 *** 作栏上,当它向右滑动时,就像这个应用程序:
[删除]
这是我的主要活动的布局:
<?xml version="1.0" enCoding="utf-8"?><androID.support.v4.Widget.DrawerLayout ...> <relativeLayout androID:orIEntation="vertical" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent"> ... </relativeLayout> <fragment androID:name="com...." androID:layout_gravity="start" androID:ID="@ID/navigation" androID:layout_wIDth="@dimen/navigation_menu_wIDth" androID:layout_height="fill_parent" /></androID.support.v4.Widget.DrawerLayout>stackoverflow上的其他一些问题类似于this question,但建议所有答案都使用滑动菜单库.但是这个应用程序他们仍然使用androID.support.v4.Widget.DrawerLayout并且他们成功了.不要问我怎么知道他们使用标准导航抽屉,但我确定.
非常感谢您的帮助.
这是最终的解决方案:非常感谢@Peter Cai这项工作完美无缺.
https://github.com/lemycanh/DrawerOnTopActionBar
解决方法:
我从https://github.com/jfeinstein10/SlidingMenu学到一个小技巧,以实现你所需要的效果.
您只需要删除窗口装饰视图的第一个子项,并将第一个子项添加到抽屉的内容视图中.之后,您只需将抽屉添加到窗口的装饰视图中.
以下是您执行此 *** 作的一些详细步骤.
首先,创建一个名为“decor.xml”的xml或任何你喜欢的东西.只放入DrawerLayout和抽屉.下面的“FrameLayout”只是一个容器.我们将用它来包装您活动的内容.
<?xml version="1.0" enCoding="utf-8"?><androID.support.v4.Widget.DrawerLayout ...> <FrameLayout androID:ID="@+ID/container" androID:orIEntation="vertical" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent"/> <fragment androID:name="com...." androID:layout_gravity="start" androID:ID="@ID/navigation" androID:layout_wIDth="@dimen/navigation_menu_wIDth" androID:layout_height="fill_parent" /></androID.support.v4.Widget.DrawerLayout>然后删除主布局中的DrawerLayout.现在主要活动的布局应该是这样的
<relativeLayout androID:orIEntation="vertical" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent"> ...</relativeLayout>我们假设主要活动的布局名为“main.xml”.
在您的MainActivity中,写如下:
@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); // Inflate the "decor.xml" LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); DrawerLayout drawer = (DrawerLayout) inflater.inflate(R.layout.decor, null); // "null" is important. // Hack: "steal" the first child of decor vIEw VIEwGroup decor = (VIEwGroup) getwindow().getDecorVIEw(); VIEw child = decor.getChildAt(0); decor.removeVIEw(child); FrameLayout container = (FrameLayout) drawer.findVIEwByID(R.ID.container); // This is the container we defined just Now. container.addVIEw(child); // Make the drawer replace the first child decor.addVIEw(drawer); // Do what you want to do.......}现在你有一个可以在Actionbar上滑动的DrawerLayout.但您可能会发现状态栏覆盖了它.您可能需要向Drawer添加paddingtop才能解决问题.
总结以上是内存溢出为你收集整理的顶部ActionBar上的Android导航抽屉全部内容,希望文章能够帮你解决顶部ActionBar上的Android导航抽屉所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)