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

作者:Dway 时间:2023-12-05 06:56:10 

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

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

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

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


<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 "";
 }

来源:http://blog.csdn.net/lin_dianwei/article/details/78806816

标签:TabLayout,Tab,间隔,设置
0
投稿

猜你喜欢

  • Java发送报文与接收报文的实例代码

    2023-07-09 04:44:01
  • Spring IOC创建对象的两种方式

    2023-09-10 15:58:27
  • Java程序测试上传Maven工程代码示例解析

    2022-01-21 18:43:25
  • Android仿淘宝物流信息TimeLineView

    2023-10-09 20:12:47
  • SpringBoot整合RabbitMQ实现消息确认机制

    2023-09-11 04:07:22
  • Android AOP注解Annotation详解(一)

    2022-05-20 11:31:18
  • struts+spring+hibernate三个框架的整合

    2022-08-08 08:13:15
  • Android 应用中跳转到应用市场评分示例

    2023-02-14 04:03:22
  • Android Studio实现带三角函数对数运算功能的高级计算器

    2022-08-21 05:02:47
  • struts2实现多文件上传的示例代码

    2022-03-09 23:40:54
  • 详解C#如何实现隐式类型转换

    2022-08-30 06:32:42
  • 浅谈Java中的Filter过滤器

    2023-07-23 10:00:08
  • java基础的详细了解第九天

    2022-11-11 20:53:50
  • Android 自定义View实现多节点进度条功能

    2022-05-04 17:13:37
  • c# 实现模糊PID控制算法

    2022-12-06 13:06:22
  • 详解在LINUX上部署带有JAR包的JAVA项目

    2022-12-30 21:07:14
  • java实现简易外卖订餐系统

    2021-11-04 16:01:25
  • 详解java_ 集合综合案例:斗地主

    2022-02-08 04:14:49
  • Android引导页面的简单实现

    2023-08-06 04:24:32
  • maven环境变量配置以及失败原因解析

    2023-09-15 22:43:28
  • asp之家 软件编程 m.aspxhome.com