Jetpack Compose 选项卡控件实现

这里写目录标题

  • 介绍
  • 主体
  • 解释

介绍

实现选项卡控件
在这里插入图片描述

主体

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Tab
import androidx.compose.material3.TabRow
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp// 定义一个 Composable 函数,用于创建带有选项卡的布局
@Composable
fun TabLayoutExample() {// 使用 remember 来记住可变状态,selectedTabIndex 表示当前选中的选项卡索引var selectedTabIndex by remember { mutableStateOf(0) }// 定义选项卡的标题列表val tabTitles = listOf("选项卡 1", "选项卡 2")// 使用 Column 布局将选项卡和内容垂直排列Column(// 让 Column 填充整个可用空间modifier = Modifier.fillMaxSize()) {// 创建一个 TabRow 用于显示选项卡TabRow(// 指定当前选中的选项卡索引selectedTabIndex = selectedTabIndex// 指定文字颜色contentColor = Color.White,// 指定背景颜色containerColor = Color(0xFF4F4F4F),) {// 遍历选项卡标题列表tabTitles.forEachIndexed { index, title ->// 创建一个 Tab 组件Tab(// 设置选项卡的文本内容text = { Text(title) },// 判断当前选项卡是否被选中selected = selectedTabIndex == index,// 当选项卡被点击时,更新 selectedTabIndex 的值onClick = { selectedTabIndex = index })}}// 根据选中的选项卡索引显示不同的内容when (selectedTabIndex) {0 -> ContentForTab1()1 -> ContentForTab2()}}
}// 定义一个 Composable 函数,用于显示选项卡 1 的内容
@Composable
fun ContentForTab1() {// 使用 Column 布局将内容垂直排列Column(// 让 Column 填充整个可用空间,并添加内边距modifier = Modifier.fillMaxSize().padding(16.dp),// 设置垂直排列方式为居中verticalArrangement = Arrangement.Center,// 设置水平排列方式为居中horizontalAlignment = Alignment.CenterHorizontally) {// 显示文本内容Text("这是选项卡 1 的内容")}
}// 定义一个 Composable 函数,用于显示选项卡 2 的内容
@Composable
fun ContentForTab2() {// 使用 Column 布局将内容垂直排列Column(// 让 Column 填充整个可用空间,并添加内边距modifier = Modifier.fillMaxSize().padding(16.dp),// 设置垂直排列方式为居中verticalArrangement = Arrangement.Center,// 设置水平排列方式为居中horizontalAlignment = Alignment.CenterHorizontally) {// 显示文本内容Text("这是选项卡 2 的内容")}
}    

解释

  1. TabLayoutExample 函数:

该函数是整个布局的核心,用于创建带有选项卡的界面。
selectedTabIndex 用于记录当前选中的选项卡索引,初始值为 0。
tabTitles 是一个包含选项卡标题的列表。
Column 用于将选项卡和内容垂直排列。
TabRow 用于显示选项卡,其中的 Tab 组件根据 selectedTabIndex 来判断是否选中,并在点击时更新 selectedTabIndex
when 语句根据 selectedTabIndex 的值显示不同的内容。

  1. ContentForTab1ContentForTab2 函数:

这两个函数分别用于显示选项卡 1 和选项卡 2 的内容。
它们都使用 Column 布局将内容垂直居中显示,并添加了内边距。
内容为简单的文本信息。
通过这种方式,你可以实现一个简单的选项卡布局,点击不同的选项卡可以显示不同的内容。

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

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

相关文章

Java 大视界 -- Java 大数据在智慧文旅旅游目的地营销与品牌传播中的应用(150)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

使用密码连接Redis服务的两种方式

说明:本文介绍连接需要密码的Redis服务的两种方式 方式一 连接时,携带密码,如下: redis-cli -a [密码]如下: 有两个问题: 密码直接放在命令里,可通过 history 找到,不安全&#x…

搭建React简单项目

一、项目构建 目录结构: 安装脚手架 npm install -g create-react-app // or yarn add -g create-react-app 一、项目版本 1、react:"^18.3.1"; 2、react-router-dom:"^6.23.1"; 3、项目创…

知识库已上线

目录 知识库上线了加入知识库注册账号切换租户加入租户找到知识库点击申请等待管理员审核通过后,点击去后台可以开始创作了创建我们的第一个知识库点击详情进入创作页面,创建我们的第一篇知识 发布知识将我们的知识库变更为公开状态发布知识等待管理员审…

对象克隆以及BigInteger()方法,与BigDecima()方法的学习

BigInteger()方法: ①获取一个随机的大整数: public class Test3 {public static void main(String[] args) {Random rnew Random();BigInteger bigIntegernew BigInteger(4,r);System.out.println(bigInteger);} } ②&#xf…

学习记录-vue2,3-vue实现tab栏

目录 vue实现tab栏功能描述实现效果vue实现tab栏实现步骤1. 概念理解2. Tab栏切换 完整实例代码 vue实现tab栏功能描述 选项卡切换选中状态 实现效果 vue实现tab栏实现步骤 1. 概念理解 了解vue的基础指令 代码含义v-on绑定事件,可以简写为:事件名“执行体”。…

【读书笔记】华为《从偶然到必然》

note 华为的成功并非偶然,而是通过IPD体系、投资组合管理、平台战略等系统性工具,将研发投资转化为可持续的商业竞争力。书中强调的“管理即内部因素”理念,揭示了企业规模扩张与管理能力匹配的深层规律,为高科技企业提供了可借鉴…

表达式树和编译原理【10道经典面试题】(中英对照)

表达式树(Expression Tree) 是一种用于表示数学表达式的二叉树结构。它在编译器设计、数学计算引擎、符号计算等领域有着广泛的应用(《表达式树(Expression Tree)在编译器中的应用》)。理解表达式树的构建、…

【redis】主从复制:单点问题、配置详解、特点详解

文章目录 单点问题什么是主从复制主从模式能解决的问题并发量有限可用性问题 配置建立复制通过配置文件来指定端口配置主从查看集群结构 断开复制 特点安全性只读传输延迟 单点问题 分布式系统中,涉及到一个非常关键的问题:单点问题 某个服务器程序&…

VSCode 生成HTML 基本骨架

在VSCode 新建html文件中敲一个英文感叹号 ! <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…

STM32定时器-01定时器概述

内容概述 定时器是STM32中功能最强大、结构最复杂的一个外设&#xff0c;分为四部分&#xff1a; 一部分&#xff1a;定时中断功能 二部分&#xff1a;定时器输出比较&#xff0c;常见的用途&#xff1a;产生PWM波形&#xff0c;驱动电机&#xff08;如驱动舵机和直流电机&…

在 Ubuntu 中用 Docker 安装 RAGFlow

一、安装 1.前提条件 CPU > 4 核 RAM > 16 GB Disk > 50 GB Docker > 24.0.0 & Docker Compose > v2.26.1 安装docker&#xff1a;在Ubuntu中安装Docker并配置国内镜像 2.设置 vm.max_map_count #设置 vm.max_map_count 不小于 262144# 查看 sysctl vm.…

17153 班级活动

17153 班级活动 ⭐️难度&#xff1a;简单 &#x1f31f;考点&#xff1a;2023、思维、国赛 &#x1f4d6; &#x1f4da; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int N 10…

Java IO 流:从字节到字符再到Java 装饰者模式(Decorator Pattern),解析与应用掌握数据流动的艺术

在 Java 编程中&#xff0c;IO&#xff08;输入输出&#xff09;流是处理数据输入输出的核心工具。无论是读取文件、网络通信&#xff0c;还是处理用户输入&#xff0c;IO 流都扮演着重要角色。本文将深入探讨 Java IO 流的核心概念、分类、经典代码实例及其应用场景&#xff0…

HTTPS

目录 一 HTTPS是什么 二 加密 三 加密方案 四 CA机构/证书 五 最终方案(对称密钥/非对称密钥/CA证书)和总体流程 一 HTTPS是什么 在应用层存在SSL&#xff0c;TLS(HTTP之下&#xff0c;传输层之上)加密/解密安全协议&#xff0c;如果HTTP经过这个协议&#xff0c;对端也走…

StarRocks 主键(Primary Key)深度解析

一、StarRocks 产品简介 StarRocks 是一款高性能分析型数据库&#xff0c;专为海量数据的实时分析而设计。作为新一代湖仓&#xff08;Lakehouse&#xff09;加速引擎&#xff0c;StarRocks 融合了 MPP 架构和列式存储引擎的优势&#xff0c;能够支持亿级数据秒级查询响应。 …

(学习总结30)Linux 进程优先级、进程切换和环境变量

Linux 进程优先级、进程切换和环境变量 进程优先级基本概念查看系统进程PRI 和 NI 解释进程优先级调整命令行调整进程优先级调整新进程调度优先级命令 nice调整已运行进程调度优先级命令 renice 使用 top 调整进程优先级使用系统调用调整进程优先级 进程的竞争、独立、并行、并…

《Manus学习手册》.pdf(文末附完整版下载地址)

大家好&#xff0c;我是吾鳴。 吾鳴今天要给大家分享的一份比较全面详细的Manus学习手册&#xff0c;该学习手册主要包含Manus产品概述与核心理念、Manus功能与使用场景、Manus技术架构与工作流、Manus案例库与用户实践、邀请码获取与内测信息、Manus与传统AI对比与优势、用户评…

【MySQL】从零开始:掌握MySQL数据库的核心概念(三)

人生碌碌&#xff0c;竞短论长&#xff0c;却不道枯荣有数&#xff0c;得失难量。 前言 这是我自己学习MySQL数据库的第二篇博客总结。后期我会继续把MySQL数据库学习笔记开源至博客上。 上一期笔记是关于MySQL数据库的数据类型&#xff0c;没看的同学可以过去看看&#xff1a…

Web3智能合约与数据交互安全性探讨

Web3智能合约与数据交互安全性探讨 随着区块链技术的飞速发展&#xff0c;Web3的概念已经成为技术圈的热门话题。Web3不仅仅是技术迭代&#xff0c;它代表了一种全新的互联网交互方式&#xff0c;其中智能合约扮演着核心角色。智能合约是自动执行、控制或文档化法律事件和行动…