当前位置:   article > 正文

DrawerLayout使用抽屉布局做侧边布局,使用ActionBar点击左上角图片弹出侧边布局,使用ViewPager实现fragment的切换_drawer抽屉中如何设置可以点击切换页面

drawer抽屉中如何设置可以点击切换页面

1.做Module思路,做这个需要三个依赖:
implementation ‘com.android.support:support-v4:28.0.0’
implementation ‘com.android.support:cardview-v7:28.0.0’
implementation ‘com.android.support:design:28.0.0’
在这里插入图片描述
2.主界面布局

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.DrawerLayout xmlns:android=“http://schemas.android.com/apk/res/android
xmlns:app=“http://schemas.android.com/apk/res-auto
android:id="@+id/drawer_layout"
xmlns:tools=“http://schemas.android.com/tools
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=".MainActivity">

<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.bwie.textbegin.NaviFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="start"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

</android.support.v4.widget.DrawerLayout>
3.MainActivity代码
public class MainActivity extends AppCompatActivity {

private DrawerLayout mDrawerLayout;
private ViewPager mViewPager;
private TabLayout mTabLayout;
private ActionBarDrawerToggle mToggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //初始化控件对象
    initViews();

    //初始化ActionBar
    initActionBar();

    //初始化ViewPager
    initViewPager();

}

private void initViewPager() {
    ArrayList<Fragment> fragments = new ArrayList<>();
    fragments.add(new VRPanoFragment());
    fragments.add(new VrVideoFragment());

    MyAdapter adapter = new MyAdapter(getSupportFragmentManager());
    adapter.setFragment(fragments);
    mViewPager.setAdapter(adapter);

    //tabLayout指示器有几个,创建几个
    mTabLayout.addTab(mTabLayout.newTab());
    mTabLayout.addTab(mTabLayout.newTab());

    //是tablayout和ViewPaer
    mTabLayout.setupWithViewPager(mViewPager);
    //给TabLayout指示器设置文本,万物从0begin
    mTabLayout.getTabAt(0).setText("小辉");
    mTabLayout.getTabAt(1).setText("二期");

}


//设置我点击左上角,能够弹出侧边菜单
private void initActionBar() {

    //获取一个ActionBar对象
    ActionBar actionBar = getSupportActionBar();
    //给左上角一张图片,4.0意思默认图片,给true可以直接使用
    actionBar.setDisplayHomeAsUpEnabled(true);
    //有一类提供了绑定DrawerLayout功能
    mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
    //DrawerLayout和ActionBar关联
    mToggle.syncState();//同步状态
    mDrawerLayout.addDrawerListener(mToggle);
}

//设置左上角按钮具备点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(mToggle.onOptionsItemSelected(item)){
        return true;
    }
    return super.onOptionsItemSelected(item);
}

private void initViews() {
        mDrawerLayout = findViewById(R.id.drawer_layout);
        mViewPager = findViewById(R.id.vp);
        //注意:这里是TabLayout,不是tableLayout.会报强类型转换异常,TabLayout提供了一个水平的布局来展示tabs
        mTabLayout = findViewById(R.id.tab_layout);
        //LOCK_MODE_UNLOCKED锁定模式解锁
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    }
}
4.适配器
public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
    super(fm);
}

private List<Fragment> mFragments;

//创建一个方法,接收外界传来的Fragment的集合
public void setFragment(List<Fragment> fragment){
    mFragments = fragment ;
}

@Override
public Fragment getItem(int i) {
    Fragment fragment = mFragments.get(i);
    return fragment;
}

@Override
public int getCount() {
    return mFragments.size();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98

}
//5.效果
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/279442
推荐阅读
相关标签
  

闽ICP备14008679号