本文演示了Android Studio中使用ViewPager实现页面切换的方法。通过创建包含3个页面的ViewPager示例,详细展示了实现步骤:1)在XML布局中配置ViewPager和切换按钮;2)使用LayoutInflater动态加载页面布局;3)自定义SimplePagerAdapter适配器;4)通过setCurrentItem()方法实现按钮点击切换页面功能。代码包含完整的Activity、Adapter实现以及页面布局示例,适用于基础ViewPager使用场景,如需ViewPager2版本也可提供。

实施软件android studio

目标:

ViewPager类型的使用;

LayoutInflater类型布置页面;

pages存储页面类型;

按钮跳转到页面1;

实施代码:

当然可以!下面是一个完整示例,演示如何使用 ViewPagersetCurrentItem() 方法来切换页面。我们用三个简单的页面作为演示内容。


✅ 示例:点击按钮切换 ViewPager 页面(使用 setCurrentItem

1. activity_main.xml 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/btnPage1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="跳转到第1页" /><androidx.viewpager.widget.ViewPagerandroid:id="@+id/viewPager"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" />
</LinearLayout>

2. MainActivity.java 代码:

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;
import android.view.LayoutInflater;
import android.view.ViewGroup;public class MainActivity extends AppCompatActivity {private ViewPager mViewPager;private Button btnPage1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mViewPager = findViewById(R.id.viewPager);btnPage1 = findViewById(R.id.btnPage1);// 创建页面视图List<View> pages = new ArrayList<>();LayoutInflater inflater = getLayoutInflater();pages.add(inflater.inflate(R.layout.page1, null));pages.add(inflater.inflate(R.layout.page2, null));pages.add(inflater.inflate(R.layout.page3, null));// 设置适配器SimplePagerAdapter adapter = new SimplePagerAdapter(pages);mViewPager.setAdapter(adapter);// 点击按钮跳转到第一页btnPage1.setOnClickListener(v -> mViewPager.setCurrentItem(0));  // index 0 = 第1页}
}

3. SimplePagerAdapter:

package com.example.myapplication;import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import androidx.viewpager.widget.PagerAdapter;
import java.util.List;public class SimplePagerAdapter extends PagerAdapter {private final List<View> mViewList;public SimplePagerAdapter(List<View> viewList) {this.mViewList = viewList;}@Overridepublic int getCount() {return mViewList.size();}@Overridepublic boolean isViewFromObject(View view, Object object) {boolean result = (view == object);Log.d("isViewFromObject", "判断结果: " + result);return result;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {View view = mViewList.get(position);container.addView(view);return view;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}
}

4. 示例页面布局 page1.xmlpage2.xmlpage3.xml

例如 res/layout/page1.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="页面 1"android:textSize="30sp" />

另外两个页面内容类似,改一下 text="页面 2"text="页面 3" 即可。


如果你使用的是 ViewPager2 而不是旧的 ViewPager,用法稍有不同,我也可以给你新版代码。需要的话可以告诉我。

运行效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/83299.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/83299.shtml
英文地址,请注明出处:http://en.pswp.cn/web/83299.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据可视化新姿势:Altair的声明式魔法

文章目录 一、告别编程式绘图的苦日子二、5分钟极速入门安装篇&#xff08;记得先备好虚拟环境&#xff01;&#xff09;核心三剑客 三、高阶玩法揭秘1. 交互功能秒实现2. 复合图表so easy3. 魔改样式有套路 四、避坑指南&#xff08;血泪经验&#xff09;五、Altair vs 其他库…

PostgreSQL --数据库操作

一、基本操作 1、登录 #切换pg用户 su - postgres#重启服务 pg_ctl -D /usr/local/pgsql/data -l logfile restart#进入pg psql2、数据库操作 2.1、列出库 \l\lselect datname from database; \l&#xff1a;输出比\l多了Size,Tablespace 和 Description 列 &#xff1a;扩展输…

树莓派超全系列教程文档--(63)rpicam-apps可用选项介绍之常用选项

rpicam-apps可用选项介绍之常用选项 rpicam-apps 选项参考常用选项helpversionlist-camerascameraconfigtimeoutpreviewfullscreenqt-previewnopreviewinfo-textwidth 和 heightviewfinder-width 和 viewfinder-heightmode打包格式详细信息解压格式详细信息 viewfinder-modelor…

AI的发展过程:深度学习中的自然语言处理(NLP);大语言模型(LLM)详解;Transformer 模型结构详解;大模型三要素:T-P-G 原则

AI的发展过程&#xff1a;深度学习中的自然语言处理&#xff08;NLP&#xff09;&#xff1b;大语言模型&#xff08;LLM&#xff09;详解&#xff1b;Transformer 模型结构详解&#xff1b;大模型三要素&#xff1a;T-P-G 原则 AI的发展过程与大模型原理详解一、AI的发展过程符…

SDXL 和 SDXL-Turbo 的区别

(1) SDXL&#xff08;Stable Diffusion XL&#xff09; 标准扩散模型&#xff0c;基于传统的多步去噪&#xff08;通常 20~50 步&#xff09;。 训练充分&#xff0c;特征更稳定&#xff0c;适合用于特征提取、方向学习&#xff08;如 LoRA、SAE&#xff09;。 计算成本高&am…

PyTorch:让深度学习像搭积木一样简单!!!

文章目录 &#x1f680; 一、 PyTorch的王炸&#xff1a;动态图 vs 静态图静态图的“痛苦回忆”&#xff08;前方高能吐槽&#xff01;&#xff09;PyTorch动态图的降维打击&#x1f525; &#x1f525; 二、 不只是灵活&#xff01;PyTorch的三大杀器1. 张量&#xff08;Tenso…

LeetCode--27.移除元素

解题思路&#xff1a; 1.获取信息&#xff1a; 给定一个数组和一个值&#xff0c;删除数组中等于这个值的值 要求是&#xff0c;返回数组中不等于这个值的数的数目 并且要求在数组上删除&#xff0c;不能使用额外辅助空间 还是给了评测标准&#xff08;你可以根据它的原理来实现…

WebRTC(二):工作机制

核心组成 GetUserMedia&#xff1a;获取本地音视频设备&#xff08;摄像头、麦克风&#xff09;数据流。RTCPeerConnection&#xff1a;实现点对点的媒体流传输和网络连接管理。RTCDataChannel&#xff1a;点对点的任意数据通道&#xff08;除音视频外传输数据&#xff09;。 …

机器学习+城市规划第十五期:时空地理加权回归(STGWR)

机器学习城市规划第十五期&#xff1a;时空地理加权回归&#xff08;STGWR&#xff09; 引言 随着城市化进程的加速&#xff0c;城市规划面临越来越多复杂的挑战。在传统的城市规划中&#xff0c;通常会考虑到地理位置的影响&#xff0c;但往往忽略了时间维度。而在现代城市的…

用虚拟机安装macos系统之后进入Boot Manager页面

安装教程&#xff1a;在VMware中安装macos系统教程 在VMware中安装macos系统时启动后进入Boot Manager界面&#xff0c;通常是由于虚拟机的固件类型设置于镜像不兼容所致。 解决办法&#xff1a;虚拟机默认使用UEFI启动模式&#xff0c;但是部分macos镜像需要切换到BIOS模式才…

基于API的Redis缓存实现

1.使用Redis API 进行业务数据缓存管理 编写一个进行业务处理的类ApiCommentService,使用Autowired注解注入Redis API中常用的RedisTemplate&#xff08;类似于Java基础API中的JdbcTemplate&#xff09;&#xff1b; 然后在数据查询、修改和删除三个方法中&#xff0c;根据业…

前沿论文汇总(机器学习/深度学习/大模型/搜广推/自然语言处理)

文章目录 1 前言2 大模型/自然语言处理2.1 FreeAL&#xff1a;在大模型时代实现无需人工的主动学习2.2 COLD&#xff1a;中文攻击性语言检测基准2.3 将词汇的对比信息融入词嵌入以实现反义词-同义词区分2.4 LogRAG&#xff1a;基于检索增强生成的半监督日志异常检测2.5 RankRAG…

PP-OCRv5 ubuntu20.04 OCR识别服务

目录 说明 使用 效果 下载 说明 PP-OCRv5 ubuntu20.04 OCR识别服务 使用 1、下载后解压 2、进入目录、运行程序 效果 1、浏览器访问 2、接口调用 下载 方式1 源码下载 方式2 通过网盘分享的文件&#xff1a;lw.PP_OCRService.tar.gz 链接: https://pan.baidu.com…

VScode打开后一直显示正在重新激活终端 问题的解决方法

一、问题 本人打开“.py”文件后&#xff0c;同时会出现以下两个问题。 1、VScode一直循环在”正在重新激活终端“ 2、日志显示intellicode报错&#xff1a; Sorry, something went wrong activating IntelliCode support for Python. Please check the “Python” and “VS I…

uniapp 实现腾讯云音视频通话功能

uniapp 深度集成腾讯云音视频通话功能实战指南 一、技术架构解析 腾讯云音视频解决方案采用IM信令控制层TRTC媒体传输层的双架构设计&#xff0c;实现核心能力解耦&#xff1a; #mermaid-svg-DKBpT4CVDkqU1IBw {font-family:"trebuchet ms",verdana,arial,sans-ser…

linux常见问题之截取文件指定行数

linux常见问题之截取文件指定行数 一、命令概述 在处理大文本文件时&#xff0c;我们打开该文件会非常不方便&#xff0c;比如服务器上的日志文件&#xff0c;于是我们常常需要提取特定的行进行分析。Linux 系统中提供了多个强大的命令行工具&#xff0c;可以帮助我们高效地完…

微前端 - Native Federation使用完整示例

这是一个极简化的 Angular 使用angular-architects/native-federation 插件的微前端示例&#xff0c;只包含一个主应用和一个远程应用。 完整示例展示 项目结构 federation-simple/ ├── host-app/ # 主应用 └── remote-app/ # 远程应用 创建远程应用 (remote…

无服务器架构的企业级应用深度解析:Serverless技术选型与成本模型

📋 目录 引言:无服务器架构的兴起无服务器架构核心概念主流Serverless平台技术对比企业级应用场景分析成本模型深度分析私有化部署与云端服务对比决策框架构建最佳实践与建议未来发展趋势结论引言:无服务器架构的兴起 在云计算快速发展的今天,无服务器架构(Serverless)…

内网有猫和无线路由器,如何做端口映射从而实现外网访问

内网猫和无线路由器端口映射配置指南 端口映射&#xff08;Port Forwarding&#xff09;是将外网请求引导到内网特定设备和端口的技术&#xff0c;常用于远程访问、搭建服务器等场景。以下是配置方法&#xff1a; 基本原理 猫&#xff08;调制解调器&#xff09;&#xff1a…

Spring boot应用监控集成

Spring Boot应用监控集成记录 背景 XScholar文献下载应用基于Spring Boot构建&#xff0c;需要接入Prometheus监控系统。应用已部署并运行在服务器上&#xff0c;需要暴露metrics端点供Prometheus采集。 初始状态 应用信息 框架: Spring Boot 2.x部署端口: 10089服务器: L…