如何在底部导航栏保持存在的情况下启动不同的布局



如何在底部导航栏始终保留在屏幕上的情况下启动不同的活动。例如,如果我单击底部导航栏中的选项卡,它会启动谷歌地图视图,我该如何使它仍然可以看到底部导航栏。非常像YouTube应用程序,底部导航栏始终存在。如果我能被指出正确的方向,那就太好了,我可以自己做研究

Fragment是活动的模块化部分,它有自己的生命周期,有自己的布局、视图......(有点像"子活动"( 使用片段的另一个明显优势是跨不同屏幕的UI优化,它使您可以在一个活动中管理多个页面。 现在请按照以下步骤操作:

  1. 使您的主要活动扩展FragmentActivity

    public class MainActivity extends FragmentActivity {
    ...
    }
    
  2. 将主活动布局更改为如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.yourComp.appName.MainActivity">
        <android.support.v4.view.ViewPager
            android:id="@+id/body"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_above="@id/footer" />
        <LinearLayout
            android:id="@+id/footer"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal" />
    </RelativeLayout>
    
  3. 创建一个新的 FragmentPagerAdapter 如下所示,我定义了 3 个页面,但您可能想更改它,请记住您必须创建一个 Fragment 而不是您需要的每个活动:

    public class FragmentAdapter extends FragmentPagerAdapter {
        static final int NUMBER_OF_PAGES = 3;
        Context context;
        public FragmentAdapter(android.support.v4.app.FragmentManager fm, Context context) {
            super(fm);
            this.context = context;
        }
        @Override
        public int getCount() {
            return NUMBER_OF_PAGES;
        }
        @Override
        public android.support.v4.app.Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return new Fragment1();
                case 1:
                    return new Fragment2();
                case 2:
                    return new Fragment3();
                default:
                    return null;
          }
       }
    }
    
  4. 现在转到Android工作室,单击">文件>新建>片段>片段(空白(",然后创建之前FragmentAdapter中列出的片段。此片段有效,而不是您的活动。

  5. 最后将这一行添加到您的主活动 OnCreate 方法中,目的是在主活动布局上绑定之前使用 viewPager 声明的片段:

    ragmentAdapter = new FragmentAdapter(((FragmentActivity) this).getSupportFragmentManager(), this);
    ViewPager pager = (ViewPager) findViewById(R.id.body);
    viewPager.setAdapter(fragmentAdapter);
    

现在设计您自己的自定义页脚视图或使用底部导航视图。用户可以在片段之间滑动,也可以使用此方法以编程方式更改页面:

viewPager.setCurrentItem(n);  // n is fragment number that decleared in adapter 0,1,2

此外,您可能希望禁用用户手动滑动,如此处所述。

如果要使用相同的底部导航视图,则必须使用片段。有了活动,你就做不到。这是最佳做法。

是的,您也可以将底部导航与活动一起使用,但您必须创建导航视图所有其他活动并设置侦听器。 例如,像YouTube一样,比方说,第一个活动是具有导航视图的主页。 然后您单击"趋势",趋势活动打开。 在趋势活动中,您必须再次创建导航视图。

相关内容

最新更新