您的位置:首页 > 其它

TabLayout和viewpager的完美结合

2017-10-14 09:30 267 查看
我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合。达到很漂亮的效果。但是TabPageIndicator是第三方的,而且比较老了,当然了现在很多大神都已经开始自己写TabPageIndicator来满足自己的需求,在2015年的google大会上,google发布了新的
Android
Support Design
库,里面包含了几个新的控件,其中就有一个TabLayout,它就可以完成TabPageIndicator的效果,而且还是官方的,最好的是它可以兼容到2.2以上版本,包括2.2。下面我就举一个简单的例子来使用它。 我使用的 android studio进行开发的,所以引用TabLayout很简单,只要在build.gradle中加compile'com.android.support:design:26.0.0-alpha1'即可。1.布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:layout_width="match_parent"
android:layout_height="match_parent" tools:context="com.bwie.skn.tablayout.MainActivity">

<android.support.design.widget.TabLayout
android:id="@+id/tl"
android:layout_width="match_parent"
android:layout_height="50dp"
app:tabGravity="center"
app:tabIndicatorColor="@color/colorAccent"
app:tabMode="scrollable"
app:tabTextColor="@color/colorPrimary"
></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tl"
></android.support.v4.view.ViewPager>

</RelativeLayout>
2.代码package com.bwie.skn.moni.indent;import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.util.Log;import com.bwie.skn.moni.R;import java.util.ArrayList;import java.util.List;public class IndentListActivity extends AppCompatActivity {private TabLayout tl;private ViewPager vp;private List<String> datas = new ArrayList<String>();private String[] status = new String[]{"4","0","1","2"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_indent_list);tl = (TabLayout) findViewById(R.id.tl);vp = (ViewPager) findViewById(R.id.vp);datas.add("全部");datas.add("待支付");datas.add("已支付");datas.add("已取消");vp.setAdapter(new MyAdapter(getSupportFragmentManager()));//进行关联tl.setupWithViewPager(vp);}class MyAdapter extends FragmentPagerAdapter {//带参的构造方法public MyAdapter(FragmentManager fm) {super(fm);}@Overridepublic int getCount() {return datas.size();}//返回选项卡的文本 ,,,添加选项卡@Overridepublic CharSequence getPageTitle(int position) {return datas.get(position);}@Overridepublic Fragment getItem(int position) {//创建fragment对象并返回Bundle bundle = new Bundle();Log.e("UUUUU",status[position]);bundle.putString("url", status[position]);//实例化FragmentAllFragment allFragment = new AllFragment();allFragment.setArguments(bundle);return allFragment;}}}3.fragment中接收Bundle bundle = getArguments();String urlTitle = bundle.getString("url").toString();
///垂直的
//需要导入依赖
compile 'q.rorbin:VerticalTabLayout:1.2.5'
//布局文件
<?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:orientation="horizontal"><!--VerticalTabLayout是竖向的标题栏,与TabLayout用法相同,不过需要导入依赖--><q.rorbin.verticaltablayout.VerticalTabLayoutandroid:id="@+id/vt"android:layout_width="100dp"android:layout_height="match_parent" /><android.support.v4.view.ViewPagerandroid:id="@+id/vp"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: