com.google.android.material.tabs.TabLayout

这篇具有很好参考价值的文章主要介绍了com.google.android.material.tabs.TabLayout。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical"
    tools:context=".main.MainActivity">


    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/main_viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="65dp"/>

    <com.google.android.material.tabs.TabLayout
            android:id="@+id/tab_layout_main"
            android:layout_width="match_parent"
            android:background="@color/white"
            app:tabGravity="fill"
            app:tabMaxWidth="0dp"
            app:tabMode="fixed"
            android:layout_height="65dp" />

</RelativeLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@color/transparent"
    android:gravity="center">

    <CheckBox
        android:id="@+id/tb_main_tab_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@null"
        android:checked="false"
        android:focusable="false"
        android:clickable="false"
        android:text="" />

    <TextView
        android:id="@+id/tv_main_tab_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/dimen_4"
        android:text=""
        android:textSize="@dimen/font_12"
        android:clickable="false"
        android:textColor="@drawable/common_tab_text_color" />

</LinearLayout>

 文章来源地址https://www.toymoban.com/news/detail-832815.html

二、界面中使用

private String[] tabs;
private int[] resIds;
  tabs = this.getResources().getStringArray(R.array.main_tab_btn_name);
        resIds = new int[]{R.drawable.icon_main_tab_bg,
                R.drawable.icon_project_tab_bg,
                R.drawable.icon_block_tab_bg,
                R.drawable.icon_me_tab_bg};

        ViewPagerScrollAdapter scrollAdapter = new ViewPagerScrollAdapter(getSupportFragmentManager(), getLifecycle(), fragmentList);

        binding.mainViewpager.setAdapter(scrollAdapter);

        binding.mainViewpager.setUserInputEnabled(false);
//        binding.mainViewpager.setOffscreenPageLimit(2);
        binding.tabLayoutMain.setTabTextColors(R.color.color_3D80FC, R.color.color_3D80FC);

        mediator = new TabLayoutMediator(binding.tabLayoutMain, binding.mainViewpager, new TabLayoutMediator.TabConfigurationStrategy() {
            @Override
            public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
                //自定义TabView
                View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_main_tab_view, null);
                view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT,1));

                TextView tabView = view.findViewById(R.id.tv_main_tab_text);
                tabView.setText(tabs[position]);


                CheckBox checkBox = view.findViewById(R.id.tb_main_tab_checkbox);
                checkBox.setBackgroundResource(resIds[position]);
                if (position == 0) {
                    checkBox.setChecked(true);
                    tabView.setSelected(true);
                }

                tab.setCustomView(view);
            }
        });

        binding.tabLayoutMain.setSelectedTabIndicatorHeight(0); //去掉下划线
        binding.tabLayoutMain.setTabRippleColor(ColorStateList.valueOf(getContext().getResources().getColor(R.color.white)));//去掉黑色背景

        //要执行这一句才是真正将两者绑定起来
        mediator.attach();
    binding.tabLayoutMain.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                selectOrLogin();
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                ((CheckBox) tab.getCustomView().findViewById(R.id.tb_main_tab_checkbox)).setChecked(false);
                tab.getCustomView().findViewById(R.id.tv_main_tab_text).setSelected(false);
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                selectOrLogin();
            }
        });
 
ViewPagerScrollAdapter 
public class ViewPagerScrollAdapter extends FragmentStateAdapter  {
    private ArrayList<Fragment> fragmentList;

    public ViewPagerScrollAdapter(@NonNull Fragment fragment) {
        super(fragment);
    }

    public ViewPagerScrollAdapter(@NonNull FragmentActivity fragmentActivity,ArrayList<Fragment> fragmentList) {
        super(fragmentActivity);
        this.fragmentList=fragmentList;
    }

    @Override
    public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
        recyclerView.setItemViewCacheSize(fragmentList.size());
    }

    public ViewPagerScrollAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle,ArrayList<Fragment> fragmentList) {
        super(fragmentManager, lifecycle);
        this.fragmentList=fragmentList;
    }


    @NonNull
    @Override
    public Fragment createFragment(int position) {
        // 返回Fragment
        return fragmentList.get(position);
    }

    @Override
    public int getItemCount() {
        // 获取Fragment数量
        return fragmentList.size();
    }

}

到了这里,关于com.google.android.material.tabs.TabLayout的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android——viewpage2+tablayout+fragment动态添加删除

    一、简介: 1、添加和删除按钮可动态添加删减tab页面 2、获取每个fragment数据页上的数据 3、为每个数据页赋值 二、 效果图: 三、实现: 主要功能实现:( ViewPage2Fragment.java ) 先初始化适配器 frament数据页(ViewPage2DataFragment.java) 适配器(FragmentStateViewPager2Adapter.java) 主布

    2024年02月16日
    浏览(40)
  • Android 设置TabLayout选中后的字体、大小、颜色等设置

    初始化 1)在xml中设置颜色变化 其中,tabTextColor未未选中时的颜色,tabSelectedTextColor为选中时的颜色。 2)对已定义好的TabLayout进行处理。 在监听器中设置样式 在选中时或未选中时,获取已设置的TextView,然后可以去设置需要的大小、加粗等变化。 我做了一个简单的封装,这

    2024年02月12日
    浏览(38)
  • android 关于TabLayout联动ViewPager2 实现底部导航栏

    最近在心血来潮想写在app 不过我关于android可以说是0基础 在写底部导航栏的时候去问了大佬才知道TabLayout和ViewPager 花了两天才看懂... 这里只是简单介绍因为我不准备专门做安卓软件所以在学的途中很多地方没有认真记 本篇文章使用的代码是Java 这里官方是有将两个进行联动

    2024年01月25日
    浏览(43)
  • Android开发:利用Android Studio自带的底部导航栏和ViewPager+TabLayout创建顶部导航栏

    目录 效果图 底部导航栏 ​编辑 顶部导航栏 底部导航栏首个Fragment代码 适配器代码 顶部导航栏首个Fragment代码  顶部导航栏另外三个Fragment代码  ​编辑 顶部导航栏四个Fragment的XML 补充 学Android开发开始实操,第一步肯定要把大致布局搞定。做这个布局用到的知识难点有fr

    2024年02月03日
    浏览(60)
  • Android kotlin 实现仿蜜源ViewPager和指示器对应上面TabLayout功能

    在 app 的 build.gradle 在添加以下代码 1、 TabLayout : implementation \\\'com.google.android.material:material:1.1.0\\\' 2、 implementation \\\'com.github.li-xiaojun:StateLayout:1.3.4\\\' //allprojects {…增加:maven { url ‘https://jitpack.io’ }…} 3、 implementation \\\'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.6\\\' ,这个里面带的适配

    2024年02月09日
    浏览(74)
  • Android中实现Material3主题

    Material 3是由Google引入的一种设计系统,通过采用一套设计原则、指南和组件,提供统一直观的用户体验。 在本篇文章中,您将学习如何: 在您的Android应用程序中应用Material 3主题。 如何使用Material 3属性应用于您的视图。 如何应用动态着色。 首先需要引入material组件以来:

    2024年01月17日
    浏览(35)
  • Android开发的UI设计——Material Design

    Material Design 是用于指导用户在各种平台和设备上进行视觉、动作和互动设计的全面指南。如需在您的 Android 应用中使用 Material Design,请遵循 Material Design 规范中定义的准则,并使用 Material Design 支持库中提供的新组件和样式。 安卓中的Material Design 作为Google旗下的一员——

    2024年02月13日
    浏览(38)
  • 【学习】https://gitee.com/DingJiaxiong

    【学习】https://gitee.com/DingJiaxiong 0 前言 事情是这样,我准备把之前所有的笔记都放到Gitee 上了 不用GitHub … 就别问原因了。【方便大家自取】 OK,这几个月多多少少也写了2000 + 篇Markdown 笔记了,有些现在还没发出博客,因为一天只能发20 篇。 这些笔记都是自己看B站视频做的

    2024年02月01日
    浏览(49)
  • 使用gitee上传代码报错:git@gitee.com: Permission denied (publickey),如何配置GitEE公钥

    git@gitee.com: Permission denied (publickey). Could not read from remote repository.  Please make sure you have the correct access rights and the repository exists. Permission denied (publickey) 没有权限的publickey(公锁) ,出现这错误一般是以下两种原因: 客户端与服务端未生成 ssh key 客户端与服务端的ssh key不匹配 找到

    2024年02月05日
    浏览(64)
  • Android Material组件库(日期选择和时间选择器)基本使用

    原文:Android Material组件库(日期选择和时间选择器)基本使用 - Stars-One的杂货小窝 简单的封装下Material组件里的日期选择器和时间选择器的使用方法 需要添加Material组件库的依赖(不过后面新版本Android Studio创建的新项目都会有此依赖了...)

    2024年02月05日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包