Logo

Logo

Android – ViewPager2

Pastore Antonio
Pastore Antonio 2023年09月19日
721 阅读 0 评论 约 4431 字 阅读约 9 分钟

1. 效果

在这里插入图片描述

1. 添加ViewPager2控件

在activity_main.xml中添加 androidx.viewpager2.widget.ViewPager2 控件, 有些版本可能提示无此控件,需要在 build.gradle中添加依赖:implementation 'androidx.viewpager2:viewpager2:1.0.0'

添加ViewPager2控件后,activity_main.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".MainActivity">

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

2. MainActivity.java中添加ViewPager2

public class MainActivity extends AppCompatActivity {

    private ViewPager2 mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mViewPager = findViewById(R.id.viewpager);

        List<String> dataList = new ArrayList<>();
        dataList.add("你");
        dataList.add("好");
        dataList.add("啊");
        dataList.add("你");
        dataList.add("是");
        dataList.add("谁");
        dataList.add("啊");
        mViewPager.setAdapter(new ViewPagerAdapter(dataList));
    }
}

mViewPager.setAdapter(new ViewPagerAdapter(dataList));这行代码时,先写下来,然后用 alt + enter 快捷键提示添加 ViewPagerAdapter 类。
创建完 ViewPagerAdapter 类后,先放着,创建ViewPager中的页面

3. 创建ViewPager中的页面

在 Layout 右键,new -> Layout Resource File,创建一个xml,名字随意
在这里插入图片描述
item_pager.xml里面的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/itme_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:orientation="vertical">

    <TextView
        android:id="@+id/item_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="30sp" />

</LinearLayout>

4. 添加ViewPagerAdapter类代码

public class ViewPagerAdapter extends RecyclerView.Adapter<ViewPagerAdapter.ViewPagerHolder> {

    private List<String> mDataList;
    private List<Integer> mItemColorList;

    public ViewPagerAdapter(List<String> data){
        mDataList = data;

        mItemColorList = new ArrayList<>();
        mItemColorList.add(Color.parseColor("#feeeed"));
        mItemColorList.add(Color.parseColor("#fedcbd"));
        mItemColorList.add(Color.parseColor("#817936"));
        mItemColorList.add(Color.parseColor("#b2d235"));
        mItemColorList.add(Color.parseColor("#64492b"));
        mItemColorList.add(Color.parseColor("#817936"));
        mItemColorList.add(Color.parseColor("#fffffb"));
    }

    @NonNull
    @Override
    public ViewPagerAdapter.ViewPagerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new ViewPagerHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_pager, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull ViewPagerHolder holder, int position) {
        holder.mItemTv.setText(mDataList.get(position));
        holder.mItemContainer.setBackgroundColor(mItemColorList.get(position));
    }


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


    class ViewPagerHolder extends RecyclerView.ViewHolder{
        LinearLayout mItemContainer;
        TextView mItemTv;

        public ViewPagerHolder(@NonNull View itemView) {
            super(itemView);

            mItemContainer = itemView.findViewById(R.id.itme_container);
            mItemTv = itemView.findViewById(R.id.item_tv);
        }
    }
}

说明:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5. 示例代码

ViewPager2示例代码

6. 参考

更多详细ViewPager2的例子,可以参考Android官方示例:Android ViewPager2 官方示例

查看完整代码

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它

附件下载

共 6 个文件
在这里插入图片描述
GIF 522.6 KB
在这里插入图片描述
PNG 38.9 KB
在这里插入图片描述
PNG 47.7 KB
在这里插入图片描述
PNG 21.5 KB
在这里插入图片描述
PNG 25.1 KB
在这里插入图片描述
PNG 10.4 KB
部分文章可能存在转载,如果涉及到侵权,请联系删除文章。

探索AIGC相关的精彩内容,共 15 篇文章

Azure AI 服务之语音识别

简介 Azure AI 服务中的语音识别 API 是微软提供的一项先进技术,旨在帮助开发者轻松实现语 ... Android – ViewPager2

2026-02-17 · Xzavier Aaron
MCP | 一文详解什么是 MCP以及 MCP 可以做什么

一、什么是 MCP MCP(Model Context Protocol)是一个专为大型语言模型(L ... Android – ViewPager2

2026-02-14 · Shen, Luke
你的工作流程,值得一个“全自动数字分身”:录制、截图、成文,一气呵成

一、一句话认识 TestFlow Recorder 在数字化工作环境中,如何准确记录操作步骤并生成清 ... Android – ViewPager2

2026-02-14 · Xzavier Aaron
Flowise 前端框架配置指南

用户需求 问题:有没有适合配置 Flowise 的前端框架? 目标:寻找类似 Open WebUI ... Android – ViewPager2

2026-02-14 · Xzavier Aaron