TabLayout2015

作为谷歌的亲儿子,使用起来相对还是很方便的,而且查api也很便捷!不过此控件对于开发版本的要求还是挺高的,eclipse基本没戏,AS是个不错的选择。

《XML布局》
compile 'com.android.support:design:23.2.0'  AS开发的时候注意添加,否则是没有下面的那些属性的 -_-
xmlns:app="http://schemas.android.com/apk/res-auto"

<android.support.design.widget.TabLayout android:id="@+id/tab_title_top"
android:visibility="gone" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#fc18ce" app:tabIndicatorColor="#0000ff" app:tabSelectedTextColor="#00ff00" app:tabIndicatorHeight="2dp" app:tabTextAppearance="@style/TablayoutTextsize" app:tabTextColor="#ffff00" />
<!--
app:tabIndicatorColor=""                 // 下方滚动的下划线颜色
app:tabSelectedTextColor=""              // tab被选中后,文字的颜色
app:tabTextColor=""                      // tab默认的文字颜色
app:tabMaxWidth="100dp"                  //tab最大宽度
app:tabMinWidth="50dp"                   //tab最小宽度
app:tabPaddingStart="10dp"               //距离开始位置
app:tabIndicatorHeight="2dp"             //下划线高度
app:tabPaddingBottom="2dp"               //距离底部位置
app:tabPaddingEnd="10dp"                 //距离尾端位置
-->

<!--设置tablayout文字大小属性-->
<style name="TablayoutTextsize" parent="TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse">
    <item name="android:textSize">18sp</item>
    <item name="android:textAllCaps">false</item>
</style>

《代码Activity》

//可根据自己tab的多少来设置TabLayout的模式
tab_title_top.setTabMode(TabLayout.MODE_FIXED);//适合tab比较少的情况
tab_title_top.setTabMode(TabLayout.MODE_SCROLLABLE);//适合tab比较多的情况

此处就是各种数据的处理 如fragment tabTitles

//设置tab和viewpager联动及自定义布局
tab_title_top.setupWithViewPager(vp_show);
for (int i = 0; i < tab_title_top.getTabCount(); i++) {
    TabLayout.Tab tab = tab_title_top.getTabAt(i);
    View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.custom_tab_view, null);
    TextView tv_show = (TextView) view.findViewById(R.id.tv_show);
    tv_show.setText(list_title.get(i));
    ImageView iv_show = (ImageView) view.findViewById(R.id.iv_show);
    iv_show.setImageResource(R.drawable.ic_launcher);
    // iv_show.setImageResource(imageResId[position]);
    tab.setCustomView(adapter.getTabView(view));
}

//最后保存一下实例化状态
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt(POSITION, tab_title_top.getSelectedTabPosition());
    outState.putInt(POSITION, tab_title_bottom.getSelectedTabPosition());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    vp_show.setCurrentItem(savedInstanceState.getInt(POSITION));
}

《适配器:Adapter》

public class VPAdapter extends FragmentPagerAdapter {
    private List<Fragment> list_fragment;                         //fragment列表
    private List<String> list_Title;                              //tab名的列表
    private Context context;

    public VPAdapter(Context context, FragmentManager fm, List<Fragment> list_fragment, List<String> list_Title) {
        super(fm);
        this.context=context;
        this.list_fragment = list_fragment;
        this.list_Title = list_Title;
    }

    @Override
    public Fragment getItem(int position) {
        return list_fragment.get(position);
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        return list_Title.get(position % list_Title.size());
    }
   //此处是自定义View的关键
    public View getTabView(View view){
        return view;
    }
}











DEMO下载:点击打开链接


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值