顶部ActionBar上的Android导航抽屉

顶部ActionBar上的Android导航抽屉,第1张

概述我正试图将导航抽屉放在 *** 作栏上,当它向右滑动时,就像这个应用程序:[删除]这是我的主要活动的布局:<?xmlversion="1.0"encoding="utf-8"?><android.support.v4.widget.DrawerLayout...><RelativeLayoutandroid:orientation="vertical"android:layo

我正试图将导航抽屉放在 *** 作栏上,当它向右滑动时,就像这个应用程序:
[删除]

这是我的主要活动的布局:

<?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导航抽屉所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1103384.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存