侧滑菜单栏+viewpager+tablayout+fragment

  在开发过程中,经常会搭建这样一个布局,请看图

 


有没有觉得很实用,下面就来一起看这个环境是如何搭建的吧


首先是XML布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.a13683.buju.MainActivity">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
!!!在这个地方请注意,要添加依赖(使用TabLayout是5.0的新特性,编译版本小于5.0要添加依赖)
        <android.support.design.widget.TabLayout
            android:id="@+id/tab"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        </android.support.design.widget.TabLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </LinearLayout>
     <fragment
!!!这个地方请注意:我设置的是左滑菜单栏,你可以尝试一下其他的,这里就要建一个Fragment,
因为其中没内容,我就不写了。
 class="com.example.a13683.buju.BlankFragment"
         android:layout_gravity="start"
         android:layout_width="180dp"
         android:layout_height="match_parent">

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

MainActivity


package com.example.a13683.buju;

import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private DrawerLayout draw;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private ActionBarDrawerToggle barDrawerToggle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        InitKongjian();
        // 初始化ActionBar
        InitBar();
       //初始化ViewPager
        InitPager();

    }

    private void InitPager() {
        //1创建一个集合,用来装Fragment
        ArrayList<Fragment> list = new ArrayList<Fragment>();
        //2.Fragment对象放入集合显示  1想实现几个fragment就写几个
         list.add(new class1());
        list.add(new class2());       这里的类都要创建,同时创建布局
        list.add(new class3());
        //3.适配
        MyBase base = new MyBase(getSupportFragmentManager());
        //将集合传给适配器
        base.setFragments(list);
        //viewpager设置适配器
        viewPager.setAdapter(base);
        //4.tablayout的指示器有几个就创建几个,我有三个
        tabLayout.addTab(tabLayout.newTab());
        tabLayout.addTab(tabLayout.newTab());
        tabLayout.addTab(tabLayout.newTab());
        //5.使得tablayoutviewpager相关联
        tabLayout.setupWithViewPager(viewPager);
        //6.tablayout指示器设置文本           2,同时改变的还有这个地方
        tabLayout.getTabAt(0).setText("今日看点");
        tabLayout.getTabAt(1).setText("朝闻天下");
        tabLayout.getTabAt(2).setText("购物广场");

    }

    private void InitKongjian() {
        draw = (DrawerLayout) findViewById(R.id.activity_main);
        tabLayout = (TabLayout) findViewById(R.id.tab);
        viewPager = (ViewPager) findViewById(R.id.pager);


    }
    private void InitBar() {
        //1获取一个Actionbar对象
        ActionBar bar = getSupportActionBar();
        //2添加一个返回图标
        bar.setDisplayHomeAsUpEnabled(true);
        //3关联
        //这个类提供了一个方便的方式来绑定功能 参数 上下文,drawerlayout  资源(盲人点击时,会发出声音)
        barDrawerToggle = new ActionBarDrawerToggle(this, draw, R.string.open, R.string.close);
        //将抽屉指示器的状态与连接的Drawablelayout同步状态
        barDrawerToggle.syncState();
       draw.addDrawerListener(barDrawerToggle);
    }

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



}

适配器


package com.example.a13683.buju;


import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;



public class MyBase extends FragmentPagerAdapter {
    public MyBase(FragmentManager fm) {
        super(fm);
    }
    private List<Fragment> mfragments;
    public void setFragments(List<Fragment> fragments){
        mfragments = fragments;
    }
    @Override
    public Fragment getItem(int position) {
        Fragment fragment = mfragments.get(position);
        return fragment;
    }

    @Override
    public int getCount() {
        return mfragments.size();
    }
}

整个搭建环境的过程大约就是这样,感兴趣的可以再完善一下这个代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值