侧滑菜单栏+viewpager+tablayout+fragment

来源:互联网 发布:网络主页版式规范 编辑:程序博客网 时间:2024/06/06 09:42

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

 


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


首先是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();    }}

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

原创粉丝点击