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

时间:2018-04-29 04:06:00

标签: java android navigationbar

如何在底部导航栏始终保留在屏幕上时启动不同的活动。例如,如果我单击底部导航栏中的选项卡,它会启动谷歌地图视图,我如何制作它,以便仍然可以看到底部导航栏。非常像youtube应用程序,底部导航栏始终存在。如果我可以指向正确的方向,我会自己做研究

2 个答案:

答案 0 :(得分:1)

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

  1. 让您的主要Acitivy扩展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个页面,但您可能想要更改此页面,请记住您必须创建一个片段而不是您需要的每个活动:

    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 Studio,点击文件&gt;新&gt;片段&gt;片段(空白),然后创建FragmentAdapter中列出的片段。 fragments 可以代替您的活动。

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

    ragmentAdapter = new FragmentAdapter(((FragmentActivity) this).getSupportFragmentManager(), this);
    ViewPager pager = (ViewPager) findViewById(R.id.body);
    viewPager.setAdapter(fragmentAdapter);
    
  6. 现在设计您自己的自定义页脚视图或使用 BottomNavigationView 。用户可以在片段之间滑动,也可以使用此方法以编程方式更改页面:

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

    此外,您可能需要禁用用户手动扫描,如描述here

答案 1 :(得分:-1)

如果你想使用相同的底部导航视图,那么你必须使用片段。有了活动,你无法做到。这是最好的做法。

是的,您也可以使用底部导航和活动,但您必须创建导航视图所有其他活动并设置监听器。恩。比如youtube,让我们说,第一个活动就是带导航视图的家。然后点击“趋势”,打开趋势活动。在趋势活动中,您再次必须创建导航视图。