亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

TabLayout用法和總結(一)

標簽:
Java Android

今天我给大家带来一篇关于TabLayout的文章,TabLayout我查看别人的文章,我发现TbLayout有些不足的地方。比如他的下划线就是只能固定的为一条直线(Indicator),如果我的下划线是为一个三角型怎么办。那这个TabLayout就无法解决了。(当然解决是可以,就是相当的麻烦)。当然在我们设计的过程中,如果下面的是直线我们就可以用TabLayout来实现。

首先我们要了解用到了那些知识点。

一、FragmentPagerAdapter
这个用来设置Tab的一般在这继承这类里面要有Tab的数量。里面还要实现三个方法。
getCount():这方法返回的一个Int值,返回的Tab的数量。
getItem(int position):每次滑动的时候,取得Tab的下标,我们取到这个下标的值就可以给我们的ViewPage,所以ViewPage应该暴露一个方法出来。
CharSequence getPageTitle(int position):这方法返回的一个字符串,意思就是Tab显示的内容。当然我们可以根据下标来可以显示Tab的信息。
package com.example.office.tablayoutandroid;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter {
final int PAGE_COUNT = 3;
private String tabTitles[] = new String[]{"时间","金钱","健康"};
private Context context;
private int [] imageResId={R.mipmap.one,R.mipmap.two,R.mipmap.three};

public SimpleFragmentPagerAdapter(FragmentManager fm,Context context) {
    super(fm);
    this.context = context;
}
@Override
public Fragment getItem(int position) {
    return PageFragment.newInstance(position+1);
}
@Override
public int getCount() {return PAGE_COUNT;
}
@Override
public CharSequence getPageTitle(int position) {return tabTitles[position];
}

}

二、Fragment
这里要重写两个方法,分别是onCreate()和onCreateView(),此时我们还要注意的是,我们还要写一个单例模式。也就是说此时要写三个方法。为什么要写这个单例模式,主要是给getItem()的一个回调,得到Tab的对应的那个下标。
onCreate():通过Bundle传过来的值,然后再通过getArguments().getInt(ARG_PAGE);得到里面的值。
onCreateView():此时我们要在这方法里面创建一个View这View就是我们ViewPage显示的页面。
package com.example.office.tablayoutandroid;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class PageFragment extends Fragment {
public static final String ARG_PAGE = "ARG_PAGE";
private int mPage;
//单例模式
public static PageFragment newInstance(int page) {
Bundle args = new Bundle();
args.putInt(ARG_PAGE, page);
PageFragment pageFragment = new PageFragment();
pageFragment.setArguments(args);
return pageFragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPage = getArguments().getInt(ARG_PAGE);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_page, container, false);
TextView textView = (TextView) view;
textView.setText("Fragment #" + mPage);
return view;
}
}
三、接下来就是TabLayout与ViewPage的结合。
tabLayout.setupWithViewPager(viewPager);就可以实现TabLayout与ViewPage的结合。
package com.example.office.tablayoutandroid;

import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

public class ThirdActivity extends FragmentActivity {

private SimpleFragmentPagerAdapter pagerAdapter;
private ViewPager viewPager;
private TabLayout tabLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    pagerAdapter = new SimpleFragmentPagerAdapter(getSupportFragmentManager(), this);

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    viewPager.setAdapter(pagerAdapter);
    tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.setTabMode(TabLayout.MODE_FIXED);

}

}

點擊查看更多內容
5人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
移動開發工程師
手記
粉絲
15
獲贊與收藏
320

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消