TabLayout+ViewPager+Fragment制作页卡

本人很懒,直接上代码了。

布局文件:

<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout 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/main_content"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:fitsSystemWindows="true"    tools:context="com.ztd.nahu.activity.HomeActivity">    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <android.support.design.widget.TabLayout            android:id="@+id/tab_layout"            android:layout_width="match_parent"            android:layout_height="wrap_content"            app:tabIndicatorColor="@android:color/transparent"            app:tabIndicatorHeight="0dp"            app:tabSelectedTextColor="@android:color/holo_red_light"            app:tabTextColor="@android:color/black"            android:layout_alignParentBottom="true">        </android.support.design.widget.TabLayout>        <android.support.v4.view.ViewPager            android:id="@+id/container"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_above="@+id/tab_layout"            app:layout_behavior="@string/appbar_scrolling_view_behavior" />    </RelativeLayout></android.support.design.widget.CoordinatorLayout>

Tab自定义布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    android:orientation="horizontal">    <ImageView        android:id="@+id/img"        android:layout_width="20dp"        android:layout_height="20dp" />    <TextView        android:id="@+id/title_tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textColor="@color/tab_text_color"/></LinearLayout>

Activity代码:
public class HomeActivity extends AppCompatActivity {    @BindView(R.id.tab_layout)    TabLayout mTabLayout;    @BindView(R.id.container)    ViewPager mViewPager;    private TabPagerAdapter mSectionsPagerAdapter;    private String[] titleArra = new String[]{"最新", "娱乐", "财经", "体育"};    private int[] imgArra = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher};

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_home);        ButterKnife.bind(this);

// Create the adapter that will return a fragment for each of the three        // primary sections of the activity.        mSectionsPagerAdapter = new TabPagerAdapter(this, getSupportFragmentManager(), titleArra, imgArra);

//TabLayout设置为宽度占满屏幕或者为可滚动        mTabLayout.setTabMode(TabLayout.MODE_FIXED);

// Set up the ViewPager with the sections adapter.        mViewPager.setAdapter(mSectionsPagerAdapter);        mTabLayout.setupWithViewPager(mViewPager);

//Add the tag elements        for (int i = 0; i < titleArra.length; i++) {            TabLayout.Tab tab = mTabLayout.getTabAt(i);            tab.setCustomView(mSectionsPagerAdapter.getTabView(i));        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_home, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();

//noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }

return super.onOptionsItemSelected(item);    }}
适配器:
public class TabPagerAdapter extends FragmentPagerAdapter {    private Context mContext;    private String[] titleArra = null;    private int[] imgArra = null;    public TabPagerAdapter(Context context, FragmentManager fm, String[] titleArra, int[] imgArra) {        super(fm);        this.mContext = context;        this.titleArra = titleArra;        this.imgArra = imgArra;    }    @Override    public Fragment getItem(int position) {        // getItem is called to instantiate the fragment for the given page.        // Return a PlaceholderFragment (defined as a static inner class below).        switch (position) {            case 0:                break;            case 1:                break;            case 2:                break;            case 3:                break;        }        return MapFragment.newInstance(position + 1);    }    @Override    public int getCount() {        return titleArra == null ? 0 : titleArra.length;    }    @Override    public CharSequence getPageTitle(int position) {        return titleArra != null ? titleArra[position] : null;    }

public View getTabView(int position) {        View view = LayoutInflater.from(mContext).inflate(R.layout.icon_layout, null);        TextView tv = (TextView) view.findViewById(R.id.title_tv);        ImageView imageView = (ImageView) view.findViewById(R.id.img);        if (imgArra == null || titleArra == null) {            return view;        }        tv.setText(titleArra[position]);        imageView.setImageResource(imgArra[position]);        return view;    }}
时间: 2024-12-26 15:55:17

TabLayout+ViewPager+Fragment制作页卡的相关文章

Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解Android 卷Ⅰ,Ⅱ,Ⅲ>中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!! 前言 上一篇文章中我们使用底部导航+Fragment的方式实现了Android主流App中大都存在的设计.并命名其为"Fragment最佳实践",作为想到单独使用Fragment的用

关于tablayout+viewpager+fragment配合使用的一点记录

最近在写项目的时候遇到要求使用tablayout和fragment,遇到了这里记录一下大致思路. tablayout是头部可以左右切换的头部控制栏控件,配合viewpager使用,fragment是碎片,可以放在viewpager里面,实现类似网易云音乐首页切换的效果.效果图如下: 首先添在build.gradle里面添加依赖: 1 implementation 'com.android.support:support-v4:28.0.0' 2 implementation 'com.andro

Android滑动导航菜单TabLayout+ViewPager+Fragment

1.主要的Activity--MemberDetailActivity 2.Activity视图的xml文件--R.layout.activity_member_detail 3.自定义的Fragment子类--CustomTrainingFragment 4.Fragment视图的xml文件-- 5.自定义Fragment子类的适配器 //1.MemberDetailActivitypackage com.vimems.coach; import android.os.Bundle; impo

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment

TabLayout 一.继承结构 public class TabLayout extends HorizontalScrollView java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.FrameLayout ? android.widget.HorizontalScrollView ? android.support.design.widget.TabLayout 二.TabLayou

cathome 猫家 开发日记-tablayout+viewpager+fragment

概述 1.tablayout.纯粹就是一个滑动菜单,只是多加一个事件,触发viewpager的滑动. 2.viewpage,是主角,一般是设定  adapter,在 adapter中,决定如何显示view,以及显示多少个view. 这里系统已经封装了一个adapter叫 fragmentadapter.转为针对view里面放fragment  的.并且主要方法为 public Fragment getItem(int i) 所以建立多个fragment  .并传递给adapter. 就可以.主体

TabLayout+ViewPager+Fragment 快速实现标题切换效果

首先呢,这个控件使用起来并不难,算是非常简单的了,不过这个 TabLayout 的 setupWithViewPager 方法有坑,要注意了,具体什么坑,自己踩过才有映像,我这里就不说了,就介绍一下如何使用吧. 在 FragmentOne 中的布局文件里面添加一个 ViewPager 和一个 TabLayout,代码如下: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:and

ViewPager + Fragment 制作类似底部导航栏

1. 四个类似的Frament布局 tab_main_fragment.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical&q

ViewPager实现页卡的最新方法--简洁的TabLayout(谷歌支持包)

效果图: 加入依赖包: compile 'com.android.support:design:22.2.0' 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com

ViewPager实现页卡的3种方法(谷歌组件)

----方法一:---- 效果图: 须要的组件: ViewPager+PagerTabStrip 布局文件代码: <!--xmlns:android_custom="http://schemas.android.com/apk/res/com.pengkv.bigo"--> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layou