我已经读过应该避免使用嵌套碎片(例如。here),但我看不到如何执行以下操作:
我正在使用以下用户界面选项卡(android:minSdkVersion="12"
):
搜索栏始终在此处,用户可以浏览多个菜单选项(“主页”,“图库”...)。我的想法是使用BaseActivity,其布局包含搜索栏和FrameLayout,我将在其中加载与用户导航选项对应的Fragment。
我的问题是在'Home'片段中我有几个标签,我想以相同的方式实现,即使用包含标签栏和FrameLayout的布局,我将在其中加载相应的片段,这导致嵌套片段......
我知道我可以使用多个活动而不是BaseActivity,并在每个布局中包含搜索栏,但每次用户更改活动时它都会显示和消失...
修改
我还需要一个固定的页脚,所以我不能使用CommonsWare在他的回答中提出的操作栏。
有人可以帮忙吗?
答案 0 :(得分:3)
有嵌套片段!!!!!!!在新的支持库版本(支持库v4,版本11)
答案 1 :(得分:2)
您可以使用ViewPager和FragmentPagerAdapter。 ViewPager允许用户在视图之间或(在您的情况下)Fragments
之间滑动。要显示tablike-controls,请使用ViewPagerIndicator。
使用您描述的布局,而不是将Fragment
加载到FrameLayout
中,而是使用如下布局对其进行充气:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/viewpagerIndicator"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
接下来,为您的ViewPager分配一个FragmentPagerAdapter
,然后加载您的碎片。
另请查看my answer here。它给出了一个更详细的例子。但请注意,它会扩展PagerAdapter
,而不是您应该使用的FragmentPagerAdapter
。
答案 2 :(得分:0)
你不能在BaseActivity布局中做标签栏吗? 然后在BaseActivity中布局将是搜索栏,标签栏和片段框架。 如果您不想在某个片段中使用导航栏,则可以将View.GONE的可见性设置为导航栏。
答案 3 :(得分:0)
我的想法是使用BaseActivity,其布局包含搜索栏和FrameLayout,我将在其中加载与用户导航选项对应的Fragment。
如果您使用单独的活动,而不是尝试将所有内容强制转换为单个活动,则不会使用嵌套的片段。
答案 4 :(得分:0)
好消息!!!!! android支持库版本11已经支持嵌套片段了。 Support Package, revision 11 (November 2012)
实现嵌套片段v4支持库的更改:
用户界面
添加了对嵌套Fragment类的支持。
您现在可以在片段中嵌入片段。这对于您希望将动态和可重用UI组件放入自身动态且可重用的UI组件的各种情况都很有用。例如,如果使用ViewPager创建向左和向右滑动并占用大部分屏幕空间的片段,则现在可以将片段插入到每个片段页面中。