TabLayout中的Tab间隔设置方法
来源:互联网 发布:模架编程培训要多久 编辑:程序博客网 时间:2024/06/10 02:53
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"/>
<?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 ""; }
阅读全文
0 0
- TabLayout中的Tab间隔设置方法
- 设置tablayout tab
- TabLayout获取子tab中的view以及设置分割线
- TabLayout.Tab设置文字+icon
- Android TabLayout 设置Tab 字体大小
- 设置Tablayout的tab宽度
- TabLayout的使用,设置tab图片
- 设置TabHost中的Tab标签大小,字体的颜色,下划线的长度,使Tab之间可以有间隔
- TabLayout两种带图标的Tab方法
- TabLayout中的Tab.setcustomview不能填满布局问题
- TabLayout和ViewPager搭配使用中如何设置Tab背景颜色(无须自定义TabLayout)
- 自定义TabLayout的Tab
- Android---Tablayout自定义tab
- android TabLayout 设置图标后,图标与文字之间间隔太大
- 设置tablayout下划线长度的方法
- TabLayout中的getSelectedTabPosition()方法返回值错误
- 设置Eclipse中的tab键为4个空格的完整方法
- 设置Eclipse中的tab键为4个空格的完整方法
- Matlab数值分析K-means聚类算法
- 交换机架构补充RMII
- [错排] BZOJ2034:「SDOI2016」排列计数
- 区块链资料不断收集
- Python-数组
- TabLayout中的Tab间隔设置方法
- 滑动窗:Subsequence
- 日志系列之Log4j2 Garbage-free模式
- [USACO3.1]最短网络 Agri-Net kruskal
- Kotlin_Recyclerview_Rxjava的封装
- android编译中的BUILD_JAVA_LIBRARY
- CentOS6.5系统"libc.so.6: version 'GLIBC_2.15' not found"解决方法
- 智能合约语言 Solidity 教程系列3
- numpy.log