IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android TabLayout+ViewPager2 -> 正文阅读

[移动开发]Android TabLayout+ViewPager2

由于谷歌对Android Studio的不断更新,和对代码库、SDK等不断更新,导致以前的好多代码都不能正常运行了,今天就给大家说说TabLayout+ViewPager2。

TabLayout+ViewPager相信大家都会用,我前年写了段代码,大致写完了,一直没管,今天测试发现不能用。一点就崩,什么问题呢?我用的androidX库中的TabLayout+ViewPager2,然后我接收的时候用的ViewPager,类型转换异常,更正错误后发现,适配器中的代码都变红了。找了各种文档,发现说TabLayout+ViewPager和TabLayout+ViewPager2的使用方法是不一样的。而我写的代码是按照TabLayout+ViewPager写的,所以,一直报错,找了几篇文章,发现不是我想要的,于是我跋山涉水,终于解决了这个棘手的问题,下面直接进入正题。

首先,我的studio是2020年3月1日这版的。android库都更新成了androidx

有的文章说TabLayout+ViewPager2是需要导依赖的,那么我告诉你,不需要。

新版的studio和新版的SDK已经把TabLayout+ViewPager2的依赖添加到了androidx库里

implementation 'com.google.android.material:material:1.1.0'这个依赖就是。

你可以看看你的App依赖库里有没有这行代码,有就不需要管,或者你就不用管,只要在xml中能打出来TabLayout和ViewPager2,就表示studio已经给你添加了这个依赖。记住,ViewPager2是androidx库中的。好,下面直接上代码

本篇讲的是在Activity中添加TabLayout+ViewPager2

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical>

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tl_tablayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/vp_give"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>
tl_tablayout = (TabLayout) findViewById(R.id.tl_tablayout);
viewPager2 = (ViewPager2) findViewById(R.id.vp_give);
listTitle = new ArrayList<>();
listTitle.add("待取货");
listTitle.add("配送中");

listFragment = new ArrayList<>();
listFragment.add(new TakeFragment());
listFragment.add(new DeliveryFragment());
GiveAdapter adapter = new GiveAdapter(this, listTitle, listFragment);
viewPager2.setAdapter(adapter);
//把TabLayout(选项卡布局)和ViewPager2绑定在一起。特别说明一下,下面这行代码是官方给的,特别好使。
new TabLayoutMediator(tl_tablayout, viewPager2, (tab, position) -> tab.setText(listTitle.get(position))).attach();

适配器中的代码

public class GiveAdapter extends FragmentStateAdapter {
    private ArrayList<String> listTitle;
    private List<Fragment> listFragment;


    public GiveAdapter(@NonNull FragmentActivity fragmentActivity, ArrayList<String> listTitle, List<Fragment> listFragment) {
        super(fragmentActivity);
        this.listTitle = listTitle;
        this.listFragment = listFragment;
    }


    @NonNull
    @Override
    public Fragment createFragment(int position) {
        return listFragment.get(position);
    }

    @Override
    public int getItemCount() {
        return listFragment.size();
    }

}

好了,结束了,怎么样,是不是很简单,哈哈哈哈哈。相信有一定基础的同学都能看懂。

 TabLayout tabLayout = view.findViewById(R.id.tab_layout);
? ? ? ? new TabLayoutMediator(tabLayout, viewPager,
? ? ? ? ? ? ? ? (tab, position) -> tab.setText("OBJECT " + (position + 1))
? ? ? ? ).attach();

最后这几行代码,是官方原文,可以看一下。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:17:18  更:2022-02-19 01:19:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 15:59:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码