• TabLayout的一种圆角背景


    <FrameLayout
         android:layout_marginTop="30dp"
               android:layout_marginStart="44dp"
               android:layout_marginEnd="45dp"
               android:background="@drawable/corner_tablayout_gray_bg"
               android:layout_width="match_parent"
               android:paddingStart="4dp"
               android:paddingEnd="4dp"
               android:layout_height="wrap_content">
               <TabLayout
                   android:id="@+id/tabLayout"
                   android:layout_width="match_parent"
                   android:layout_height="37dp"
                   app:tabIndicator="@drawable/corner_tablayout_bg"
                   app:tabIndicatorColor="@color/white"
                   app:tabIndicatorGravity="center"
                   app:tabIndicatorHeight="29dp"
                   style="@style/TabLayoutV2" />
           FrameLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
        <style name="TabLayoutV2">
            "tabIndicatorFullWidth">true
            "tabMinWidth">8dp
            "tabGravity">fill
            "android:layout_gravity">center
            "tabMode">fixed
            "tabTextAppearance">@style/MyFontStyle
            "tabTextColor">@color/gray
            "tabSelectedTextColor">@color/red
            "android:backgroundTint">@android:color/transparent
            "tabIndicatorColor">@color/red
            "tabRippleColor">@android:color/transparent
        style>
    	<style name="MyFontStyle">
            "android:textColor">@color/color_black
            "android:lineSpacingMultiplier">1.2
        style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    corner_tablayout_gray_bg.xml

    
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape>
                <corners
                    android:radius="30dp"/>
                <solid android:color="#efefef"/>
            shape>
        item>
    selector>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    corner_tablayout_bg.xml

    
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape>
                <corners android:radius="40dp" />
                <solid android:color="@color/white" />
            shape>
        item>
    layer-list>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    通过如上设置配置实现的TabLayout。关键点:

    1. 通过外部布局FrameLayout(其他都可以),来设置背景(灰色圆角)和padding(最左边和最右边的样式);
    2.            app:tabIndicator="@drawable/corner_tablayout_bg"
              app:tabIndicatorColor="@color/white"
              app:tabIndicatorFullWidth="true" 全局充满
              app:tabIndicatorGravity="center"
              
             app:tabIndicator="@drawable/corner_tablayout_bg" 
             这个是指示器图片,所以还是有平滑的滑动效果的,如果用其他方式则是瞬间移动不够美观
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    3. tabLayout的高度34dp,和app:tabIndicatorHeight=“29dp”,做一个差异实现上下padding。

    可以达成如下效果。
    请添加图片描述
    请添加图片描述

  • 相关阅读:
    创建型-单例模式-实现和优缺点
    Mybatis中的动态SQL
    数据结构:7、队列
    CSP-J 2022 第一轮试题
    Linux的关机和重启
    一个支持多存储的文件列表/WebDAV程序,使用 Gin 和 Solidjs
    kotlin基础教程:<9> 类的继承、匿名创建和伴生对象
    使用venv为Python项目创建一个独立的虚拟环境
    物联网AI MicroPython传感器学习 之 MQ136硫化氢传感器
    Linux环境基础开发工具使用
  • 原文地址:https://blog.csdn.net/jzlhll123/article/details/128130099