Android开发教程viewpager2点击指示标也能切换

Android开发教程viewpager2点击指示标也能切换

viewpager2的使用范例,关键是点击指示标也能切换

一、思路:

用viewpager2加两个imageview

二、效果图:

在这里插入图片描述

三、关键代码:
public class MainActivity extends AppCompatActivity {

    private ViewPager2 viewPager2;
    //private SlidingTabLayout stl_title;
    private ImageView iv1;
    private ImageView iv2;

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

        viewPager2 = findViewById(R.id.viewpager2);
        iv1 = findViewById(R.id.iv1);
        iv2 = findViewById(R.id.iv2);
        //stl_title = findViewById(R.id.stl_title);

        FragmentStateAdapter fragmentStateAdapter = new FragmentStateAdapter(this) {
            @NonNull
            @Override
            public Fragment createFragment(int position) {
                return new CatalogFragment(position);
            }

            @Override
            public int getItemCount() {
                return 2;
            }
        };
        viewPager2.setAdapter(fragmentStateAdapter);
        iv1.setBackgroundColor(Color.RED);
        iv2.setBackgroundColor(Color.parseColor("#eeeeee"));
        viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
            }

            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                if (position == 0){
                    iv1.setBackgroundColor(Color.RED);
                    iv2.setBackgroundColor(Color.parseColor("#eeeeee"));
                } else {
                    iv2.setBackgroundColor(Color.RED);
                    iv1.setBackgroundColor(Color.parseColor("#eeeeee"));
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {
                super.onPageScrollStateChanged(state);
            }
        });

        iv1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager2.setCurrentItem(0);
            }
        });

        iv2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewPager2.setCurrentItem(1);
            }
        });

//        ArrayList<String> arrayListTitle = new ArrayList<>();
//        arrayListTitle.add("京东1");
//        arrayListTitle.add("京东2");
//        stl_title.setViewPager2(viewPager2, arrayListTitle);
    }
}
四、项目demo源码结构图:

在这里插入图片描述
有问题或者需要完整源码的私信我

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

荣耀独立四周年:以己之名,终至海阔天空

“多少次&#xff0c;迎着冷眼与嘲笑&#xff0c;从没有放弃过&#xff0c;心中的理想……” 10月30日晚&#xff0c;原Beyond成员黄贯中充满激情的《海阔天空》歌声&#xff0c;在荣耀Magic7系列AI旗舰新品发布会上空飘扬。 如歌词所唱&#xff0c;荣耀独立四年以来&#xf…

pytest高版本兼容test_data[“log“] = _handle_ansi(“\n“.join(logs))错误

一、问题现象&#xff1a; 执行seleniumpytest结束时报: INTERNALERROR> File "D:\workspace\pytestframe\.venv\Lib\site-packages\pytest_html\report_data.py", line 141, in add_test INTERNALERROR> test_data["log"] _handle_ansi(&q…

OpenCV 学习笔记

OpenCV 环境安装 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 显示窗口 cv2.namedWindow 是 OpenCV 库中的一个函数&#xff0c;用于创建一个命名窗口&#xff0c;以便在该窗口中显示图像或进行其他图形操作。这个函数在处理图像和视频时非常…

JavaEE初阶---网络原理/UDP服务器客户端程序

文章目录 1.网络初识2.网络编程2.1TCP/UDP区别介绍2.2UDP的socket api使用2.3UDP协议里面的服务器客户端程序 1.网络初识 网络和计算机类似&#xff1a;都是属于军用》民用&#xff1b; 网络诞生于美苏争霸时期&#xff0c;当时就感觉核战争一触即发&#xff0c;形式非常严峻…

【skywalking】监控 Spring Cloud Gateway 数据

使用Spring Cloud 开发&#xff0c;用Skywalking 监控服务&#xff0c;但是Skywalking 默认是不支持 Spring Cloud Gateway 网关服务的&#xff0c;需要手动将 Gateway 的插件添加到 Skywalking 启动依赖 jar 中。 skywalking相关版本信息 jdk&#xff1a;17skywalking&#x…

开源协议类型及长安链开源协议介绍

截至目前&#xff0c;我国参与国际开源社区协作的开发者数量排名全球第二并推出了众多社区活跃度较高的高质量开源项目&#xff0c;是全球开源生态的重要贡献力量&#xff0c;但在开源治理方面我国还处于发展初期&#xff0c;大部分开发者对开源的印象还限于开放代码、免费使用…

胡壮麟《语言学教程》第五版PDF英文版+中文版翻译

胡壮麟《语言学教程》中文版&#xff1a;https://pan.quark.cn/s/9491130ec572 《语言学教程》&#xff08;英文版&#xff09;是一部经典的语言学教材&#xff0c;自 1988 年面世以来&#xff0c;被众多高校广泛采用&#xff0c;长销不衰。该教材自出版以来不断修订&#xff…

AI产品经理实战手册:策略、开发与商业化指南

通过《AI产品经理手册》&#xff0c;将可以了解不同类型的AI&#xff0c;如何将AI整合到产品或业务中&#xff0c;以及支持创建AI产品或将AI集成到现有产品所需的基础设施。熟悉实践管理AI产品开发流程、评估和优化AI模型&#xff0c;以及应对与AI产品相关的复杂伦理和法律问题…

31.安卓逆向-抓包-实战4

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信。第一…

FMC ADDA子卡 2 通道 14bit 2 通道 3GS/s ADC +16bit 2 通道 12.6GS/s DAC AD9208/AD9172/AD9689

14bit 2 通道 3/2.6/2GS/s ADC 16bit 2 通道 12.6GS/s DAC FMC AD/DA 子卡 是一款高分辨率、高采样率的 ADCDAC FMC 子板。它同时支持 2 路 14 位 3.0/2.6/2.0GS/s 的 A/D 通道输入和 2 路 16 位 12.6GS/s 的 D/A 通道输出&#xff0c; 全功率模拟 -3dB 输入带宽可达 9GHz。A 为…

红米k50电竞版修复“NV损坏” 刷写工程固件操作步骤解析 去除校验电阻图示

Redmi K50电竞版。机型代码:ingres,高通 骁龙8 Gen1。八核处理器。适用于以下型号的小米机型:21121210C, 21121210G,国外型号称为POGO F4 GT。 通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝💝-----此机型刷写工程固件预览界面 3💝�

CSRF与SSRF

csrf(跨站请求伪造)的原理: csrf全称是跨站请求伪造(cross-site request forgery)&#xff0c;也被称为one-click attack 或者 session riding scrf攻击利用网站对于用户网页浏览器的信任&#xff0c;劫持用户当前已登录的web应用程序&#xff0c;去执行分用户本意的操作。 利…

2024版最新Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

通过本篇文章&#xff0c;我们将会学习以下内容&#xff1a; 1、在Windows上安装Metasploit 2、在Linux和MacOS上安装Metasploit 3、在Kali Linux中使用 Metasploit 4、升级Kali Linux 5、使用虚拟化软件构建渗透测试实验环境 6、配置SSH连接 7、使用SSH连接Kali 8、配…

【利器】12个评估大语言模型(LLM)质量的自动化框架

LLM评估是指在人工智能系统中评估和改进语言和语言模型的过程。在人工智能领域&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;及相关领域&#xff0c;LLM评估具有至高无上的地位。通过评估语言生成和理解模型&#xff0c;LLM评估有助于细化人工智能驱动的语言相…

使用GetX实现GetPage中间件

前言 GetX 中间件&#xff08;Middleware&#xff09;是 GetX 框架中的一种机制&#xff0c;用于在页面导航时对用户进行权限控制、数据预加载、页面访问条件设置等。通过使用中间件&#xff0c;可以有效地控制用户的访问流程&#xff0c;并在适当条件下引导用户到所需页面。 这…

「图文详解」Pycharm 远程服务器Debug

首先声明一点&#xff0c;社区版的无法使用&#xff0c;需要使用 专业版Pycharm 才可以使用&#xff0c;至于密钥可以去TB购入&#xff0c;价格低廉、有效期长 相信很多小伙伴会面临本地电脑显存不够&#xff0c;但是服务器代码又无法直观的调试&#xff0c;只能靠打日志的方法…

spring组件介绍

Spring容器&#xff08;Spring Container&#xff09;&#xff1a; Spring容器是Spring框架的核心&#xff0c;它负责实例化、配置和组装Bean。Spring容器通过读取配置文件&#xff08;如XML文件或基于Java的配置类&#xff09;或注解来识别Bean定义&#xff0c;并在运行时创建…

SemiDrive E3 多核心运行 FreeRTOS 配置介绍

一、概述 本文主要介绍如何通过相关配置&#xff0c;使 Semidrive E3 芯片中的 SF 和 SP0 core 分别运行一套 FreeRTOS 操作系统。 以 multicore-xip 示例作为基础&#xff0c;参考 FreeRTOS-xip 示例的配置&#xff0c;将 FreeRTOS 移植至 SF 和 SP0 core 工程上&#xff0c;…

麻将教学知识

​​​​​​​​​​​​​​

WPF-实现多语言的静态(需重启)与动态切换(不用重启)

目录 一、多语言切换&#xff08;需重启&#xff09; 1、配置文件添加Key 2、新增附加属性当前选择语言 3、创建资源文件 4、初始化多语言集合 5、切换多语言并更新配置文件 6、应用程序启动根据配置切换多语言 7、使用 二、多语言切换&#xff08;无需重启&#xff09;…