带有活动和子片段的导航抽屉
Posted
技术标签:
【中文标题】带有活动和子片段的导航抽屉【英文标题】:Navigation drawer with Activity and child Fragments 【发布时间】:2014-04-14 12:41:12 【问题描述】:我有一个 Activity A
、一个 ListFragment P
和 2 Fragments Q
和 R
。
应用程序启动时,会创建A
,它会加载P
。根据用户点击的内容,替换为Q
或R
。
现在通过参考this 教程,我实现了一个向用户显示某些项目的导航抽屉。但是,由于我在 Activity 中实现了 Navigation Drawer,它会显示所有片段。
我希望它只对P
可用。
(非常类似于 Google 的 Gmail 应用程序。当用户在主屏幕上时 - 抽屉存在。当用户点击打开电子邮件时,抽屉变为返回按钮)
我不知道如何翻译上面的代码。任何帮助表示赞赏。
【问题讨论】:
您确定这不是其他活动吗?我认为您无论如何都可以将框架布局作为活动布局,然后完全替换抽屉片段 如果您的意思是将抽屉实现为片段并替换它,那么这是一个我没有想到的有趣建议。会尽力回复您!DrawerLayout
是Layout
我想你可以把它膨胀成一个片段
好吧,我正在使用一个使用默认 android 列表布局的列表片段。但我会尝试使用自定义布局。虽然对于抽屉,我猜我仍然需要活动上下文。所以不确定它如何特定于该片段。
如果需要自定义ListFragment
布局可以关注我的帖子***.com/questions/11770773/…
【参考方案1】:
我通过调用mDrawerToggle.setDrawerIndicatorEnabled(enable)
并根据需要传递boolean enable
或disable
来简单地覆盖向上克拉行为,从而解决了这个问题。
(我不希望抽屉显示的片段使用 false 调用此方法,而我希望显示抽屉的片段使用 true 调用此方法。出于显而易见的原因,我将调用放在相应片段的onResume()
中。)
这完全符合我的要求,而且我不必更改项目的设计:)。
【讨论】:
【参考方案2】:您可以做的是创建一个新的FragmanetActivity
S
并相应地替换Q
和R
。如果您的应用适用于 Android 3.0 较低的用户 ActionBarActivity
,请创建一个 actionbar
并设置其 setDisplayHomeAsUpEnabled(true)
。由于新的FragmentActivity
将有新的布局,所以不会有NavigationDrawer
。
【讨论】:
这是显而易见的解决方案,是的。但我想看看是否有办法只使用片段,并避免引入不必要的活动。 :) @rgamber AFAIK 我认为它不可能,因为当Fragment
被替换为FrameLayout
时,主要的layout
保持不变。每当 Fragment
被替换并且 NavigationDrawer
附加到主布局时,FrameLayout
的内容就会发生变化,因此它将始终位于 FrameLayout
上方。以上是关于带有活动和子片段的导航抽屉的主要内容,如果未能解决你的问题,请参考以下文章