TabLayout的使用篇章一
程序员文章站
2022-03-11 18:06:11
...
TabLayout的使用
一、tablayout的属性设置
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout_issue"
app:tabTextColor="@color/black"
app:tabSelectedTextColor="@color/colorPrimary"
app:tabIndicatorColor="@color/colorAccent"
app:tabBackground="@color/white"
app:tabIndicatorHeight="4dp"
app:tabMode="fixed"
app:tabGravity="center"
app:tabMaxWidth="100dp"
app:tabMinWidth="80dp"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
属性参数设置
改变选中字体的颜色
app:tabSelectedTextColor="@color/colorPrimary"
改变未选中字体的颜色
app:tabTextColor="@color/black"
改变指示器下标的颜色
app:tabIndicatorColor="@color/colorAccent"
改变整个TabLayout的颜色
app:tabBackground="@color/white"
设置文字的外貌
app:tabTextAppearance="@android:style/TextAppearance.Holo.Large"
设置指示器下标的厚度
app:tabIndicatorHeight="4dp"
当Tab很多时,如此设置即可滑动
app:tabMode="scrollable" (默认是铺满 FIXED)
设置tab显示模式 此为居中,如果是fill,则是充满
app:tabGravity="center"
设置最大的tab宽度
app:tabMaxWidth="xxdp"
最小的tab宽度
app:tabMinWidth="xxdp"
这些xml的属性设置完成后,我们开始代码实现tab的添加
tabLayout.addTab(tabLayout.newTab().setText(getResources().getString(R.string.issue_pending)));
tabLayout.addTab(tabLayout.newTab().setText(getResources().getString(R.string.issue_complete)));
tabLayout.addTab(tabLayout.newTab().setText(getResources().getString(R.string.issue_assign)));
设置到这里我们的需求并没有结束,需要给tab之间添加分割线,此时我们的布局中无法实现,只能动态添加分割线,如下代码:
LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0);//设置tab分隔符
linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
linearLayout.setDividerPadding(80);
linearLayout.setDividerDrawable(ContextCompat.getDrawable(getContext(),R.drawable.sp_exposure_select));
sp_exposure_select的xml代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#757575" />
<size android:width="1dp" />
</shape>
设置到这里,我们需要的效果基本完成,看下图效果:
到这里,我们可能考虑到,界面没有用TabLayout+ViewPager的方式搭建布局,那我们界面如何展示呢?由于需求中要求的列表格式一样,故只使用一个布局就可以了,所以这里我们用的RecyclerView,而点击不同tab时调用不同接口,需要实现tab的选择状态的判断来刷新界面,故此,tablayout的监听可以处理如上情况,代码如下:
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
pos = tab.getPosition();//0、1、2
presenter.getMyIssue(page,pos);//这里根据不同的pos来调用不同的接口即可
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
好了,至此,我们所需要的功能开发完成了!
上一篇: php如何将html转为图片
下一篇: 介绍一下什么是媒体查询
推荐阅读
-
使用 CSS & jQuery 制作一款漂亮的多彩时钟_html/css_WEB-ITnose
-
使用阿里云服务器的总结一----修改配置,阿里----
-
做一个不复制粘贴的程序员[1]: 使用模板方法模式(2)- 对象更新比较器实例
-
php 使用post,get的一种简洁方式_PHP
-
在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决思路详解
-
else是什么意思 PHP IF ELSE简化/三元一次式的使用
-
使用php完成一个用户注册以及管理的demo(php实现单文件与多文件的上传)
-
详细讲解使用Node.js写一个简单的命令行工具(详细教程)
-
在SQL 2012中使用和Oracle 一样的序列
-
一些使用频率比较高的php函数_php技巧