多个活动上的 Android 导航抽屉

     2023-04-13     16

关键词:

【中文标题】多个活动上的 Android 导航抽屉【英文标题】:Android Navigation Drawer on multiple Activities 【发布时间】:2013-09-12 22:13:54 【问题描述】:

有没有办法只配置一次 Navigation Drawer,并在多个 Activity 上显示?

【问题讨论】:

Here 是一个不错的教程。 见***.com/questions/19451715/… 正如您向下滚动时看到的,这已经解决了 【参考方案1】:

为此,只需创建一个实现抽屉的 BaseActivity 类, 并让您的所有其他活动扩展此活动。

【讨论】:

@Harish Godara:你能举个例子或教程吗 @Harish Godara:我正在尝试相同的示例,但是请您帮我看看,当我制作一个测试项目时它工作正常,但是当我将它集成到我的应用程序中时,抽屉没有打开为什么就这样..? @HarishGodara 我明白了。你能告诉我,如果我有不同的活动说 A、B、C、D 现在我在 a 上显示抽屉,并希望导航到 B 以及同一个抽屉,它的状态是不使用片段 我正在做一些与此类似的事情,但我遇到了一些小但令人恼火的问题。首先,当您从导航抽屉启动新活动时,它看起来有点笨拙,因为新活动在抽屉关闭的同时触发。此外,当您返回上一个活动时,会短暂发生标题交换。交换是从全局到活动上下文 onDrawerClosed 的更改,在新活动启动之前没有机会触发。 一切都很完美。但是我怎样才能向不同的子活动显示不同的布局????请为此提供任何信息。【参考方案2】:

对于想要一个带有活动的代码示例的人,请在此处查看我的答案:https://***.com/a/19451842/2767703

如果你想要一个漂亮的过渡,我建议:当你点击 NavigationDrawer 中的一个项目时,关闭导航抽屉并同时使用带有 250 的 postdelayed(关闭 NavigationDrawer 所需的时间)。同时在 150 毫秒内将主要内容的 alpha 设置为 0。然后,当 Activity 开始时,将主要内容的 alpha 设置为 1,时间为 250 毫秒。这提供了一个很好的过渡。我在 Google IO 代码中找到了它:https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java

顺便说一句,您还应该查看@Harish Godara 提供的链接:http://www.michenux.net/android-navigation-drawer-748.html 它适用于 Fragments,但它有一种很好的方式来实现 NavigationDrawer

编辑

由于某些链接已失效,因此我在上一个项目中用于获取动画。它在 Kotlin 中,但它应该说明这一点。这是 BaseDrawerActivity 的所有代码:

private val NAVDRAWER_LAUNCH_DELAY = 250L
private val MAIN_CONTENT_FADEOUT_DURATION = 150L
private val MAIN_CONTENT_FADEIN_DURATION = 250L

-

private var shouldAnimate:Boolean
    set(value)  intent.putExtra("animateTransition", value) 
    get() = intent.getBooleanExtra("animateTransition", false)

-

private fun changeDrawerItem(newClass: Class<*>) 
    runDelayed(NAVDRAWER_LAUNCH_DELAY, 
        startActivity(Intent(this, newClass).apply 
            addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
            putExtra("animateTransition", true)
            putExtra("selectedNav", selectedNavigationItem.name)
        )
        overridePendingTransition(0, 0)
    )

    mainContent.animate()?.alpha(0f)?.duration = MAIN_CONTENT_FADEOUT_DURATION

-

override fun onStart() 
    super.onStart()

    if(shouldAnimate) 
        mainContent.alpha = 0f
        mainContent.animate()?.alpha(1f)?.duration = MAIN_CONTENT_FADEIN_DURATION
     else 
        mainContent.alpha = 1f
    

    val selectedNav = intent.getStringExtra("selectedNav")
    if(selectedNav != null) 
        selectedNavigationItem = DrawerItem.valueOf(selectedNav)
    

-

override fun onNewIntent(intent: Intent) 
    super.onNewIntent(intent)
    setIntent(intent)

    if(shouldAnimate) 
        overridePendingTransition(0, 0)
    

-

override fun onResume() 
    super.onResume()
    intent.removeExtra("animateTransition")

【讨论】:

该链接现在指向 404,但我真的对漂亮的过渡很好奇。你有这方面的资源吗? @dan 我在上一个项目中添加了一个示例。它是用 Kotlin 编写的,但应该足以让您了解如何做到这一点

多个活动的导航抽屉,无需选择导航抽屉活动

】多个活动的导航抽屉,无需选择导航抽屉活动【英文标题】:NavigationDrawerFormultipleActivitiesWithoutSelectingNavigationDraweractivity【发布时间】:2020-06-0201:14:37【问题描述】:我是安卓新手。我想实现一个由项目列表组成的导航抽屉,... 查看详情

Android上的导航抽屉滞后

】Android上的导航抽屉滞后【英文标题】:NavigationDrawerlagonAndroid【发布时间】:2014-10-2111:45:18【问题描述】:我遇到了NavigationDrawer的问题,它太慢了,我正在寻找的解决方案是先关闭抽屉然后显示活动,但是它不起作用,当然我... 查看详情

具有多个 Activity 的 Android 导航抽屉

】具有多个Activity的Android导航抽屉【英文标题】:AndroidNavigationDrawerwithmultipleActivity【发布时间】:2019-09-1009:11:38【问题描述】:我正在尝试使用抽屉式导航创建一个BaseActivity并将其扩展到其他活动中,以便我可以重用抽屉式导... 查看详情

通过单击导航抽屉上的项目打开虚假活动

】通过单击导航抽屉上的项目打开虚假活动【英文标题】:FalseActivityopensbyclickingonanItemontheNavigationdrawer【发布时间】:2017-12-3013:46:07【问题描述】:我编写了一个测验应用程序。我还有一个导航抽屉,其中包含以下项目:主页、... 查看详情

具有多个活动的导航抽屉。 - 空指针异常

】具有多个活动的导航抽屉。-空指针异常【英文标题】:NavigationDrawerwithMultipleactivities.-NullPointerException【发布时间】:2015-03-0401:48:48【问题描述】:我正在通过AndroidStudio开发我的移动应用程序。我的应用程序的启动器活动是Spla... 查看详情

所有活动中的Android导航抽屉[重复]

】所有活动中的Android导航抽屉[重复]【英文标题】:AndroidNavdrawerinallactivities[duplicate]【发布时间】:2018-05-0901:19:49【问题描述】:如何在所有活动中显示我的导航抽屉在androidstudio中创建一个新项目并有一个导航抽屉活动后,我... 查看详情

导航抽屉和Android中的活动

】导航抽屉和Android中的活动【英文标题】:NavigationDrawerandwithActivityinAndroid【发布时间】:2014-10-2911:46:33【问题描述】:我正在尝试thistutorial.中给出的导航抽屉(幻灯片菜单)上述链接和我的不同之处在于,我尝试调用活动而不... 查看详情

android studio 不创建导航抽屉活动

】androidstudio不创建导航抽屉活动【英文标题】:androidstudiodoesn\'tcreatenavigationdraweractivity【发布时间】:2016-03-1022:46:20【问题描述】:我只想创建一个导航抽屉活动。当我右键单击应用程序>新建>活动>导航抽屉活动时,没... 查看详情

如何实现一个滑动整个活动内容的 Android 导航抽屉?

】如何实现一个滑动整个活动内容的Android导航抽屉?【英文标题】:HowcanIimplementanAndroidnavigationdrawerwhichslidewholecontentofactivity?【发布时间】:2017-02-1603:09:43【问题描述】:请任何人建议我如何实现导航抽屉滑动完整屏幕的活动。... 查看详情

单击工具栏上的汉堡包图标不会打开导航抽屉

...个导航抽屉,它工作得非常好。重构我的代码,我删除了活动中的所有onOptionsItemSelecteds,并使所有活动都继承自扩展AppComplatActivity和实现所有必要方法的基本活动。在 查看详情

如何在所有活动中使用Android Studio默认导航抽屉[重复]

】如何在所有活动中使用AndroidStudio默认导航抽屉[重复]【英文标题】:HowtouseAndroidStudiodefaultNavigationDrawerinallActivities[duplicate]【发布时间】:2016-03-1900:10:21【问题描述】:如何在其他Activity中使用Android默认Navigation?我不想使用返... 查看详情

Android 移除导航抽屉上的阴影

】Android移除导航抽屉上的阴影【英文标题】:AndroidRemoveShadowOnNavigationDrawer【发布时间】:2015-10-1215:31:51【问题描述】:Seeherewhatimean您好,我正在使用库存的导航抽屉v4,我问如何在导航抽屉打开时删除该背景阴影。这是我的Navi... 查看详情

Android上的自定义导航抽屉

】Android上的自定义导航抽屉【英文标题】:CustomnavigationdraweronAndroid【发布时间】:2020-07-2015:43:32【问题描述】:我想为我的导航抽屉实现类似的功能:我遵循了StackOverflow的这个答案,除了视图没有正确查看外,几乎得到了答案... 查看详情

更新基本导航抽屉活动的参数

...登录后将userId传递给片段UserFragment。我使用了一个新项目Android类型“导航抽屉活动”。我使用LiveData,所以当用户登录时,我的livedata的观察者会从MainActivity更新idUse 查看详情

工具栏上的 Android 导航抽屉

】工具栏上的Android导航抽屉【英文标题】:Androidnavdrawerovertoolbar【发布时间】:2015-02-2615:49:53【问题描述】:我正在创建一个带有透明Toolbar的应用程序,并且我希望NavigationDrawer出现在它之上。现在我的主要布局是:<FrameLayout... 查看详情

导航抽屉上的按钮单击

...了这个<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"an 查看详情

将(打开/关闭)按钮添加到(打开/关闭)导航抽屉的活动

...发布时间】:2013-07-2501:19:47【问题描述】:我目前正在从android网站了解NavigationDrawer,我正在使用他们的示例http://developer.android.com/training/i 查看详情

带有片段的 Android Studio 导航抽屉。工具栏隐藏在下一个片段活动或页面中

】带有片段的AndroidStudio导航抽屉。工具栏隐藏在下一个片段活动或页面中【英文标题】:AndroidStudionavigationdrawerwithfragments.ToolBarHiddeninnextfragmentActivityorpage【发布时间】:2021-04-0918:12:15【问题描述】:我正在尝试使用片段创建导... 查看详情