drawerLayout 侧滑菜单栏 实现代码

//布局代码

   <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.design.widget.TabLayout
            android:id="@+id/tab_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <android.support.v4.view.ViewPager
            android:id="@+id/vp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </LinearLayout>

    <!--次界面,也就是左边的界面,android:layout_gravity="start"-->
    <fragment
        class="com.sn.drawerlayout.NaviFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"/>

</android.support.v4.widget.DrawerLayout>

//找控件
private void initView() {
    drawerLayout = findViewById(R.id.drawer_Layout);
    viewPager = findViewById(R.id.viewPager);
    tabLayout = findViewById(R.id.tab_layout);
    //打开手势滑动
    drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNDEFINED);
}

//初始化ViewPager

private void initViewPager() {
    ArrayList<Fragment> fragments = new ArrayList<>();
    fragments.add(new Frag_one());
    fragments.add(new Frag_two());
    fragments.add(new Frag_three());
    fragments.add(new Frag_four());
    //设置适配器
    FPAdapter adapter = new FPAdapter(getFragmentManager());
    adapter.setMfragments(fragments);
    viewPager.setAdapter(adapter);

    //创建指示器
    tabLayout.addTab(tabLayout.newTab());
    tabLayout.addTab(tabLayout.newTab());
    tabLayout.addTab(tabLayout.newTab());
    tabLayout.addTab(tabLayout.newTab());

    //tablayout与viewpager关联
    tabLayout.setupWithViewPager(viewPager);
    //创建指示器文本
    tabLayout.getTabAt(0).setText("首页");
    tabLayout.getTabAt(1).setText("附近");
    tabLayout.getTabAt(2).setText("发现");
    tabLayout.getTabAt(3).setText("我的");

}

//初始化ActionBar

private void initActionBar() {
    //获取一个ActionBar
    ActionBar actionBar = getSupportActionBar();
    //给左上角一张图片 这里默认提供
    actionBar.setDisplayHomeAsUpEnabled(true);
    //这个类提供了绑定DrawerLayout的功能
    toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close);
    //drawerLayout和ActionBar关联
    toggle.syncState();//同步状态
    drawerLayout.addDrawerListener(toggle);
    //drawerLayout 监听事件
    drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {

        }

        @Override
        public void onDrawerOpened(View drawerView) {
            Log.d("zjs","侧拉菜单打开了");
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            Log.d("zjs","侧拉菜单关闭了");
        }

        @Override
        public void onDrawerStateChanged(int newState) {

        }
    });
}
//A.设置左上角按钮具备点击事件

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(toggle.onOptionsItemSelected(item)){
        return true;
    }
    return super.onOptionsItemSelected(item);
}

猜你喜欢

转载自blog.csdn.net/qq_42809182/article/details/83243932