基于TabLayout中的Tab间隔设置方法(实例讲解)

 更新时间:2017年12月22日 14:41:05   作者:Dway  
下面小编就为大家分享一篇基于TabLayout中的Tab间隔设置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

TabLayout和ViewPager搭配使用,是有很多方便性,但是TabLayout这东西还是有很多被人吐槽的地方。

这里只讲怎么设置tab之间的间隔,网上找了一堆方法,什么padding和margin的啥都没用,没办法,想用TabLayout只能自己想办法了。效果如下:

一、实现方法,既然这东西不好设置,那就直接在背景上做点事情,布局代码如下:

<android.support.design.widget.TabLayout
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:id="@+id/tl_download_tabs"
  android:layout_width="wrap_content"
  android:layout_height="30dp"
  android:layout_marginTop="10dp"
  android:layout_gravity="center_horizontal"
  android:overScrollMode="never"
  app:tabMode="fixed"
  app:tabPaddingStart="30dp"
  app:tabPaddingEnd="30dp"
  app:tabIndicatorHeight="0dp"
  app:tabBackground="@drawable/download_tab_bg_selector"
  app:tabSelectedTextColor="#000000"
  app:tabTextColor="#ffffff"/>

二、其中关键的地方就在背景的selector上,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_selected="true">
  <!--<shape>
   <solid android:color="#ffffff"/>
   <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" />
  </shape>-->
  <!--为了让TabLayout内部的Tab有间隔,暂时找不到其他设置方法,只能在背景图形里面设置间隔-->
  <layer-list>
   <item>
    <shape>
     <solid android:color="@android:color/transparent"/>
    </shape>
   </item>
   <item android:left="5dp" android:right="5dp">
    <shape>
     <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" />
     <solid android:color="#ffffff"/>
    </shape>
   </item>
  </layer-list>
 </item>
 <item android:state_selected="false">
  <!--<shape>
   <solid android:color="#bcbcbc"/>
   <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" />
  </shape>-->
  <layer-list>
   <item>
    <shape>
     <solid android:color="@android:color/transparent"/>
    </shape>
   </item>
   <item android:left="5dp" android:right="5dp">
    <shape>
     <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" />
     <solid android:color="#bcbcbc"/>
    </shape>
   </item>
  </layer-list>
 </item>
</selector>

注释掉的地方是原来没间隔的selector,这里直接给背景设置了个左右的padding,效果杠杠的。

缺点:如果间隔过大的话,那这种方式就有一点的缺陷了,就是点击到空白处,也能选中tab。

不过对于间隔不是很大的,基本是感觉不出来的。

三、Activity的使用就很简单了:

TabLayout mTabLayout = (TabLayout) findViewById(R.id.tl_download_tabs);
  mTabLayout.addTab(mTabLayout.newTab().setText("已下载"));
  mTabLayout.addTab(mTabLayout.newTab().setText("下载中"));
  mTabLayout.setupWithViewPager(mViewPager);

四、原来是线性布局下,放着TabLayout和ViewPager,试着在TabLayout外嵌套多一个RelativeLayout,发现出来的效果Tab的文字不显示了,至于网上说的调换addTab和setupWithViewPager的顺序也是坑,可以看到显示,但是出现了更离谱的情况,前面两个空白,后面还多了两个正常的,反正是很奇葩。

最后还是得在Adapter中去处理,把以下方法重写下就可以了,其实这样可能更合理些,至少能保证Tab的数量和ViewPager的页数是一致的。

@Override
  public CharSequence getPageTitle(int position) {
   if(position == 0){
    return "已下载";
   }else if(position == 1){
    return "下载中";
   }
   return "";
  }

以上这篇基于TabLayout中的Tab间隔设置方法(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Android 缩放动画 ScaleAnimation的使用小结

    Android 缩放动画 ScaleAnimation的使用小结

    ScaleAnimation即缩放动画,应用场景特别多,比如常见的隐藏菜单点击显示,这篇文章主要介绍了Android 缩放动画 ScaleAnimation的使用小结,需要的朋友可以参考下
    2024-03-03
  • Android ProductFlavor的使用详解

    Android ProductFlavor的使用详解

    如果你的项目需要要区分国内版和国外版甚至还要根据用户是否是VIP会员加上收费和免费的版本,我们可以使用ProductFlavor对UI布局和icon图标进行版本区分,有此类需求的朋友,不妨了解下本文
    2021-06-06
  • Listview加载的性能优化是如何实现的

    Listview加载的性能优化是如何实现的

    在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,接下来通过本文给大家介绍Listview加载的性能优化是如何实现的,对listview性能优化相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • Android Handler消息传递机制

    Android Handler消息传递机制

    Handler是一套 Android 消息传递机制,主要用于线程间通信。用最简单的话描述: handler其实就是主线程在起了一个子线程,子线程运行并生成Message,Looper获取message并传递给Handler,Handler逐个获取子线程中的Message
    2022-12-12
  • Android打造流畅九宫格抽奖活动效果

    Android打造流畅九宫格抽奖活动效果

    抽奖活动有很多种形式,转盘抽奖,九宫格抽奖,刮刮卡抽奖,这篇文章主要为大家详细介绍了如何打造流畅九宫格抽奖活动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 详解Android App中使用VideoView来实现视频播放的方法

    详解Android App中使用VideoView来实现视频播放的方法

    这篇文章主要介绍了Android App中使用VideoView来实现视频播放的方法,举例讲解了VideoView组件中setVidePath(String path)和setVideoURI(Uri uri)的用法,需要的朋友可以参考下
    2016-04-04
  • Android编程添加快捷方式(Short)到手机桌面的方法(含添加,删除及查询)

    Android编程添加快捷方式(Short)到手机桌面的方法(含添加,删除及查询)

    这篇文章主要介绍了Android编程添加快捷方式(Short)到手机桌面的方法,含有针对桌面快捷方式的添加,删除及查询的操作实现技巧,需要的朋友可以参考下
    2016-01-01
  • Android实现美团、大众点评的购买悬浮效果(ScrollView滚动监听)

    Android实现美团、大众点评的购买悬浮效果(ScrollView滚动监听)

    这篇文章主要为大家详细介绍了Android对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android编程之菜单Menu的创建方法示例

    Android编程之菜单Menu的创建方法示例

    这篇文章主要介绍了Android编程之菜单Menu的创建方法,结合实例形式分析了Android菜单Menu的布局、响应及功能实现技巧,需要的朋友可以参考下
    2017-08-08
  • Android库项目中的资源ID冲突的解决方法

    Android库项目中的资源ID冲突的解决方法

    本篇文章主要介绍了Android库项目中的资源ID冲突的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03

最新评论