iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android完全自定义下划线的TabLayout
  • 126
分享到

Android完全自定义下划线的TabLayout

自定义tablayout下划线Android 2022-06-06 13:06:35 126人浏览 泡泡鱼
摘要

一 介绍: 导航功能几乎是所有的APP都具备的基础功能之一,Android系统提供了TabLayout+ViewPager的组合来实现该功能。再

一 介绍:

导航功能几乎是所有的

APP
都具备的基础功能之一,Android系统提供了
TabLayout+ViewPager
的组合来实现该功能。再使用之初,发现该组合真是无敌了,但是。。。总有一些
UI
设计师觉得原生
TabLayout
的下划线样式不符合用户的审美,比如说,下划线的宽度要跟文本的宽度一样,下划线的样式要换成图片等等。
TabLayout
在这些需求面前显得那么无助,程序员被迫搬砖。

WeTabLayout
继承自
HorizontalScrollView
,这是为了实现当有多个
Tab
的时候能够左右滑动,且当滑动的时候将选中的那个
Tab
移至屏幕中间。其直接父布局为
LinearLayout
,再设置
Tab
充满父布局,或者是水平自由排列的时候很方便。下划线由
Drawable
绘制,这样的话就可以随意的更改下划线的样式,设置宽高、设置图片、设置
Shape
等。其控件已经在应用中使用,目前来看相当稳定,之后打算用来替换原生的
TabLayout

文末有代码连接,可自行下载使用~

为什么使用

WeTabLayout

实现了
TabLayout
的基本功能。 扩展了在
ViewPager
+
WeTabLayout
有多个
Tab
时,
ViewPager
左右滑动的时候默认将当前选中的Tab移动到屏幕中间。 完全自定义的
Indicator
指示器,通俗一点就是下划线。其宽度、高度、颜色、样式、图片全部支持。 开关控制
Indicator
指示器的宽度是否跟
Tab
显示的文本宽度一样。
TabView
支持自定义布局或者使用默认布局。其
TabView
在父布局中的位置,以及各个
TabView
之间的间距,完全自定义,也可选择
TabView
填充满父布局。 最重要的是
WeTabLayout
源码简单,可以自行定制。 注意: 为了能够及时的发现并更正该库所存在的问题,现邀请大家加入该微信群中,三人行必有我师,Android技术是无止境的。 当使用自定义Tab布局的时候,其设置的padding值,不要跟属性
wtl_tab_padding_left
wtl_tab_padding_right
的值冲突。 默认可以不用设置
TabView
的自定义布局,也就是可以不用给
mTabLayout
属性赋值,如果设置自定义布局的话,自定义布局的背景色会被忽略掉。

有问题可以先加入

QQ
684891631
再转微信群~

更新日志

2020-04-02:

更新了

TabView
对左右padding的支持,可以随意的设置左右的padding值,下划线的位置不会错乱。

二 简单使用: 2.1
XML
布局准备:
  
   //自定义属性示例。

具体字段解释:

 
        
        //下划线的颜色。
        //下划线的高度。
        //下划线的宽度。
        //下划线距离底部的Margin。
        //下划线的圆角。
        //下划线是否的宽度是否跟文本的宽度一样。 true是。
        //Tab被选中时的文字大小。
        //Tab默认时的文字大小。
        //Tab被选中时的文本的颜色。
        //Tab默认时的文字大小。
        //Tab被选中时是否加粗 true 是。
        //Tab是否填充满父View,true 是。
        //Tab的左padding。 
        //Tab的右padding。

属性使用注意:

wtl_indicator_width_equal_title
wtl_indicator_width
同时设置的时候,以前者为主。 2.2 代码设置:
//Step 1 :查找对象
WeTabLayout tabLayout = findViewById(R.id.dil_tablayout);
ViewPager viewPager = findViewById(R.id.viewpager);
String[] titles = {"移动", "四个字的", "小灵通", "这个很长电影啊", "NBA", "电影", "小知识", "篮球"};
//重要的一步。
tabLayout.attachToViewPager(viewPager, titles);

注意: 调用

tabLayout.setCurrentTab()
方法设置默认选中的
Tab
的时候,必须在
ViewPager
设置
Adapter
之后。

2.4 属性应用Demo:
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final WeTabLayout tabLayout = findViewById(R.id.dil_tablayout);
        ViewPager viewPager = findViewById(R.id.viewpager);
        final String[] titles = {"移动", "四个字的", "小灵通", "这个很长电影啊", "NBA", "电影", "小知识", "篮球"};
        findViewById(R.id.selected_one).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tabLayout.setCurrentTab(3);
            }
        });
        tabLayout.setTabLayoutIds(R.layout.item_sliding_tab_layout);
        tabLayout.setIndicatorBottomMargin(10);
        tabLayout.setIndicatorEqualTabText(true);
        tabLayout.setTabFillContainer(false);
        tabLayout.setCurrentTab(2);
        tabLayout.addHandleTabCallBack(new IHandleTab() {
            @Override
            public void addTab(View tab, int index) {
                //该方法再创建TabView的时候调用。
            }
        });
        tabLayout.setTabSelectedListener(new WeTabSelectedListener() {
            @Override
            public void onTabSelected(View currentTab, int position) {
                //TabView被选中的时候调用。
            }
            @Override
            public void onPreTabSelected(View preTab, int prePosition) {
                 //上一个选中的TabView。
            }
        });
        viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return CeshiFragment.newInstance();
            }
            @Override
            public int getCount() {
                return titles.length;
            }
        });
        tabLayout.attachToViewPager(viewPager, titles);
    }
}

项目地址,感觉有用的点个star~ GitHub


作者:那个人_


--结束END--

本文标题: Android完全自定义下划线的TabLayout

本文链接: https://www.lsjlt.com/news/29374.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android开发中自定义editText下划线
    看了下网上代码: 我想要的效果如下图 下划线和文字有15dp的间距   eeeeee的颜色 上代码, <"1.0" encoding="utf-8">...
    99+
    2023-03-08
    EditText设置下划线 EditText自定义下划线 Android如何自定义EditText下划线
  • Android开发中如何自定义editText下划线
    这篇文章主要介绍“Android开发中如何自定义editText下划线”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android开发中如何自定义editText下划线”文章能帮助大家解决问题。效果...
    99+
    2023-07-05
  • Android TabLayout 自定义样式及使用详解
    目录基本使用XML静态设置TabItem联动ViewPager2动态设置TabItem1. Activity布局代码2. 创建三个Fragment给ViewPager2设置3. Fr...
    99+
    2024-04-02
  • HTML怎么自定义下划线的样式
    这篇文章主要讲解了“HTML怎么自定义下划线的样式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML怎么自定义下划线的样式”吧!   text-dec...
    99+
    2024-04-02
  • Android如何自定义EditText光标与下划线颜色详解
    前言最近在写些小Demo复习基础,在用到EditText的时候突然发现之前几乎没有注意到它的光标和下划线的颜色,于是花了不少时间,看了不少博客,现在就来总结和分享一下收获,话不多说了,来一起看看详细的介绍:1、第一印象:原生的EditTex...
    99+
    2023-05-30
    android 自定义edittext 下划线颜色
  • CSS虚线下划线及虚线怎么定义
    今天小编给大家分享一下CSS虚线下划线及虚线怎么定义的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2024-04-02
  • Android实现自定义曲线图
    一般来说应用中比较常见的是折线图,直方图这种比较多,今天来写一个项目中的需求曲线图,也是在之前的折线图基础上改进而来,看效果图 主要考虑曲线的实现以及阴影部分的实现 先看代码: i...
    99+
    2024-04-02
  • Android自定义view贝塞尔曲线
    本文实例为大家分享了Android自定义view贝塞尔曲线,供大家参考,具体内容如下 贝塞尔曲线 以一个简单的贝塞尔曲线为例,二阶曲线原理 贝塞尔曲线很多功能都会用到,比如小火箭发...
    99+
    2024-04-02
  • 详解Flutter如何完全自定义TabBar
    目录前言实现过程完整代码总结前言 在App中TabBar形式交互是非常常见的,但是系统提供的的样式大多数又不能满足我们产品和UI的想法,这篇就记录下在Flutter中我在实现自定义T...
    99+
    2024-04-02
  • 通过自定制LogManager实现程序完全自定义的logger
    目录引言怎么实现自定义的LogManager自定义的LogManager中使用到的ServerFileHandler实现Formatter前一篇博文介绍了JDK logging基础知...
    99+
    2024-04-02
  • 怎么自定制LogManager实现程序完全自定义的logger
    本篇内容主要讲解“怎么自定制LogManager实现程序完全自定义的logger”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么自定制LogManager实现程序完全自定义的logger”吧!...
    99+
    2023-06-29
  • android怎么自定义曲线进度条
    要自定义曲线进度条,您可以按照以下步骤进行操作: 创建一个自定义的View类,继承自ProgressBar类。 在View类...
    99+
    2023-10-26
    android
  • Android 实现自定义折线图控件
    目录前言概述原点计算Y轴宽度计算X轴高度X轴绘制轴线X轴刻度间隔网格线、文本Y轴计算Y轴分布刻度间隔、网格线、文本折线代码前言 日前,有一个“折现图”的需求,...
    99+
    2024-04-02
  • 怎么完全掌握Vue自定义指令
    这篇文章主要介绍“怎么完全掌握Vue自定义指令”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么完全掌握Vue自定义指令”文章能帮助大家解决问题。准备:自定义指令介绍除了核心功能默认内置的指令 (v...
    99+
    2023-07-05
  • Python中下划线的含义是什么
    这篇文章给大家介绍Python中下划线的含义是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。格式例子作用及含义单下划线开头_var仅供内部使用,通常不会有python解释器强制执行末尾单下划线var_单个末尾下划线...
    99+
    2023-06-26
  • Python中下划线的含义有哪些
    这篇“Python中下划线的含义有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中下划线的含义有哪些”文章吧...
    99+
    2023-07-05
  • android自定义滚动上下回弹scollView
    本文实例为大家分享了android自定义滚动上下回弹scollView的具体代码,供大家参考,具体内容如下 这是一个自定义view,在xml布局中用这个view嵌套要使之可以上下回弹...
    99+
    2024-04-02
  • hibernate或jpa中使用AliasToBeanResultTransformer自定义类型转换ResultTransformer下划线转驼峰
    在Hibernate或JPA中使用`AliasToBeanResultTransformer`进行自定义类型转换时,可以通过以下步骤...
    99+
    2023-09-12
    jpa
  • Android怎么自定义view贝塞尔曲线
    这篇文章主要介绍了Android怎么自定义view贝塞尔曲线的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android怎么自定义view贝塞尔曲线文章都会有所收获,下面我们一起来看看吧。贝塞尔曲线以一个简单的...
    99+
    2023-07-02
  • springboot为异步任务规划自定义线程池的实现
    目录一、Spring Boot任务线程池二、自定义线程池三、优雅地关闭线程池一、Spring Boot任务线程池 线程池的作用 防止资源占用无限的扩张调用过程省去资源的创建和销毁所占...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作