Android Studio开发学习(六)———TableLayout(表格布局)、FrameLayout(帧布局)

news2024/11/26 14:27:50

目录

前言

一、Tablelayout

(一)Tablelayout的相关简介

(二)TableLayout使用方法

1. 当TableLayout下面写控件、则控件占据一行的大小。(自适应一行,不留空白)

2.多个组件占据一行,则配合TableRow实现

(三)三个常用属性

 1.collapseColumns(隐藏列)

 2.stretchColumns(拉伸列)

 3.shrinkColumns(收缩列)

(四)总结

 二、FrameLayout(帧布局)

(一)FrameLayout的相关简介

(二)常用属性

(三)实例演示

1.最简单的例子

前言

前面已经学习了平时实际开发中用得较多的线性布局(LinearLayout)相对布局(RelativeLayout), 其实学完这两个基本就够用了,小编在实际开发中用得比较多的也是这两个,虽说用得不多,但是还是有必要学习一下基本的用法的,说不定哪一天能用得上呢! 你说是吧,学多点东西没什么的,又不吃亏!好了,就扯到这里,开始这一节的学习吧,这一节我们会学习 Android中的第三个局:TableLayout(表格布局)

一、Tablelayout(表格布局)

(一)Tablelayout的相关简介

学过HTML的朋友都知道,可以通过< table >< tr >< td >就可以生成一个HTML的表格, 而Android中也允许使用表格的方式来排列组件,就是行与列的方式,就说这节的TableLayout 。

(二)TableLayout使用方法

        1. 当TableLayout下面写控件、则控件占据一行的大小。(自适应一行,不留空白)

如下设置三个button,其宽度为match_parent、按道应该不占据一行,而却一个button占了一整行

<TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:layout_width="match_parent"/>

        <Button
            android:layout_width="match_parent"/>

        <Button
            android:layout_width="match_parent"/>

</TableLayout>

2.多个组件占据一行,则配合TableRow实现

添加TableRow,使其成表格状

一个TableRow代表一行

 <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TableRow>
            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="Cell 1" />

            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="Cell 2" />

            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="Cell 3" />
        </TableRow>

        <TableRow>
            <Button
                android:layout_width="match_parent"
                android:text="第一列" />

            <Button
                android:layout_width="match_parent"
                android:text="第二列" />

            <Button
                android:layout_width="match_parent"
                android:text="第三列" />
 
            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="第四列" /> <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="第五列" />
        </TableRow>
        <TableRow>
            <Button
                android:layout_width="match_parent"
                android:text="第一列"/>
        </TableRow>

    </TableLayout>

(三)三个常用属性

        1.collapseColumns(隐藏列)

        在TableRow中定义5个按钮后,接着在最外层的TableLayout中添加以下属性: android:collapseColumns = "0,2",就是隐藏第一与第三列,代码如下:

 <TableLayout
        android:id="@+id/TableLayout2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:collapseColumns="0,2"
        tools:ignore="MissingConstraints">
        <TableRow> 
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="one" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="two" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="three" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="four" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="five" />
        </TableRow>
    </TableLayout>

 2.stretchColumns(拉伸列)

        在TableLayout中设置了四个文本框,在最外层的TableLayout中添加以下属性: android:stretchColumns = "1"

设置第二列为可拉伸列,让该列填满这一行所有的剩余空间,代码如下:

<TableLayout
        android:id="@+id/TableLayout2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="1"> 
        <TableRow>
            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="one" />

            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="two" />

            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="three" />

            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="four" />

        </TableRow>
    </TableLayout>

 3.shrinkColumns(收缩列)

设置4个文本框和一个按钮,在最外层的TableLayout中添加以下属性: android:shrinkColumns = "1"

设置第二个列为可收缩列,代码如下:

<TableLayout
        android:id="@+id/TableLayout2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:shrinkColumns="1">

        <TableRow>

            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="one" />

            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="two" />

            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="three" />

            <TextView
                android:background="#E0E0E0"
                android:padding="8dp"
                android:text="four" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="----------- one--------------- " />

        </TableRow>
    </TableLayout>

(四)总结

 二、FrameLayout(帧布局)

(一)FrameLayout的相关简介

        这个布局直接在屏幕上开辟出一块空白的区域,往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件,后续添加的控件会覆盖前一个,虽然默认会将控件放置在左上角,但是可以通过layout_gravity属性,指定到其他的位置。

(二)常用属性

FrameLayout的属性很少就两个,但是在说之前先介绍一个东西:

前景图像:永远处于帧布局最上面,直接面对用户的图像,就是不会被覆盖的图片。

两个属性:

        1.android:foreground:设置改帧布局容器的前景图像

        2.android:foregroundGravity:设置前景图像显示的位置

(三)实例演示

简单的例子
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SixthActivity"
    android:foreground="@mipmap/knowledge"
    android:foregroundGravity="right|bottom"
    >
    <TextView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="#2eaa0f" />
    <TextView
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:background="#bdaccc" />
    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#77b8ff" />
</FrameLayout>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RocketMQ之Topic和Tag最佳实践

一、Topic是什么&#xff1f;它的作用&#xff1f; Topic即主题&#xff0c;是消息队列中用于对消息进行分类和组织的一种机制&#xff0c;它有以下三种作用&#xff1a; 标识消息分类&#xff1a;RocketMQ的主题用于对消息进行分类和组织。通过为不同类型的消息分配不同的主题…

FireProx:一款功能强大的AWS API网关管理与IP地址轮换代理工具

关于FireProx FireProx是一款功能强大的AWS API网关安全管理工具&#xff0c;该工具可以帮助广大研究人员创建实现唯一IP地址轮换的实时HTTP转发代理。 在发送网络请求或进行网络交互时&#xff0c;实现源IP地址轮换是一个非常复杂的过程&#xff0c;虽然社区中也有相关的工具…

ShardingSphere再回首

概念&#xff1a; 连接&#xff1a;通过协议 方言及库存储的适配&#xff0c;连接数据和应用&#xff0c;关注多模数据苦之间的合作 增量&#xff1a;抓取库入口流量题提供重定向&#xff0c; 流量变形(加密脱敏)/鉴权/治理(熔断限流)/分析等 可插拔&#xff1a;微内核 DDL:cr…

皮具5G智能制造工厂数字孪生可视化平台,推进企业数字化转型

皮具5G智能制造工厂数字孪生可视化平台&#xff0c;推进企业数字化转型。随着信息技术的快速发展&#xff0c;数字化转型已成为企业提升竞争力、实现可持续发展的关键路径。皮具行业&#xff0c;作为一个传统的手工制造业&#xff0c;正面临着巨大的市场变革和技术挑战。如何在…

(Java)数据结构——图(第十节)AOE网以及关键路径

目录 前言 AOE网 AOE网的两个性质&#xff1a; AOE网的五个时间 事件的最早发生时间Ve[k] 活动的最早开始时间E[i] 事件的最迟发生时间Vl[k] 活动的最晚开始时间L[i] 活动的时间余量 关于关键路径的缩短 代码实现思路 前言 本博客是博主用于复习数据结构以及算法的博…

蓝桥杯备赛刷题——css

新鲜的蔬菜 这题需要使用grid 我不会 去学一下 一.什么是grid Grid 布局与 Flex 布局有一定的相似性&#xff0c;都可以指定容器内部多个项目的位置。但是&#xff0c;它们也存在重大区别。 Flex 布局是轴线布局&#xff0c;只能指定"项目"针对轴线的位置&#…

(非技术) 基因遗传相关知识学习笔记

目录 一、基因遗传名词解释 二、什么叫显性遗传和隐性遗传&#xff1f; 三、如何确定遗传性质呢&#xff1f;是显性还是隐性&#xff1f; 四、常规例子1&#xff1a; 五、常规例子2&#xff1a; 六、实际案例&#xff1a; 七、思考题&#xff1a; 八、参考&#xff1a; …

【Redis深度解析】揭秘Cluster(集群):原理、机制与实战优化

Redis Cluster是Redis官方提供的分布式解决方案&#xff0c;通过数据分片与节点间通信机制&#xff0c;实现了水平扩展、高可用与数据容灾。本文将深入剖析Redis Cluster的工作原理、核心机制&#xff0c;并结合实战经验分享优化策略&#xff0c;为您打造坚实可靠的Redis分布式…

Qt QProcess详解

1.简介 QProcess提供了在 Qt 应用程序中启动外部程序的方法。通过QProcess&#xff0c;你可以启动一个进程&#xff0c;与它通信&#xff08;发送输入和读取输出&#xff09;&#xff0c;检查它的状态&#xff0c;以及等待它完成。这个类在执行系统命令、运行其他程序或脚本时…

铸铁试验平台和铸铁实验平台的主要区别在哪——北重制造厂家

铸铁试验平台和铸铁实验平台的主要区别在于其使用目的、实验内容和功能。 首先&#xff0c;铸铁试验平台主要用于铸铁工艺试验和工艺参数优化。通过模拟铸铁工艺过程&#xff0c;对不同工艺参数进行试验&#xff0c;从而得到最佳的铸铁工艺参数。铸铁试验平台一般具有温度控制、…

DL00295-基于AirSim仿真环境的无人机深度强化学习算法路径规划完整实现含详细说明文档

-创建了一个开放的AI Gym环境&#xff0c;包括多旋翼和固定翼无人机的运动学模型。 -提供了一些UE4环境来训练和测试深度强化学习DRL导航策略。 -基于AirSim和SB3。 完整代码链接见文末。 DL00295-基于AirSim仿真环境的无人机深度强化学习算法路径规划完整实现含详细说明文档

如何在前端项目中使用opencv.js | opencv.js入门

系列文章目录 如何在前端项目中使用opencv.js | opencv.js入门如何使用tensorflow.js实现面部特征点检测tensorflow.js 如何从 public 路径加载人脸特征点检测模型tensorflow.js 如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图tensorflow.js 使用 opencv.js 将人脸…

docker 部署最新版 MySQL 实战

文章目录 前言简介第一步&#xff1a;搜索并拉取镜像1.1 搜索镜像1.2 拉取MySQL镜像1.3 查看MySQL镜像 第二步&#xff1a;生成MySQL容器2.1 运行MySQL镜像2.2 查看运行容器 第三步&#xff1a;验证服务可用性3.1 关闭防火墙3.2 连接MySQL 总结 前言 请各大网友尊重本人原创知…

独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测

独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现INFO-BiTCN-BiGRU-Attention向量加权算法优化双向时间卷积…

蓝桥杯 迷宫(bfs)

0迷宫 - 蓝桥云课 (lanqiao.cn) 思路 &#xff1a; 最后一定要倒数输出路径&#xff0c;因为从前面输出你会找不到下一个到底是谁&#xff0c;bfs过程是找最小路径&#xff0c;最后输出是去找方向&#xff0c;但是此题作为一个填空题&#xff0c;我直接手写&#xff08;开玩笑…

每日一题 — 将 x 减到 0 的最小操作数

思路&#xff1a; 题目要求是让我们从数组的最左端和最右端进行操作&#xff0c;这样的话解题的难度大大提升&#xff0c;我们可以用 正难则反 的思想&#xff1a; 题目中要求是减去数组中的数刚好等于X&#xff0c;我们可以转换成 数组中某一段的和等于 数组的总长减去X(sum -…

vue对比react18

1.模板语法-——>jsx JSX表达式用{}包裹&#xff0c;vue模板表达式用{{}}包裹&#xff0c;其余一致。 注意:if语句、switch语句、变量声明属于语句&#xff0c;不是表达式&#xff0c;不能出现在{}或{{}}中 <!--vue--> <template><div><p>I have…

Nessus【部署 02】Windows部署漏洞扫描工具Nessus详细过程分享(下载+安装+注册+激活)

这里写目录标题 1.下载安装1.1 下载1.2 安装 2.添加用户注册插件安装2.1 添加用户2.2 注册2.3 插件安装 3.安装总结 1.下载安装 1.1 下载 1.2 安装 双击Nessus-10.7.1-x64.msi进行安装 这个只能接受&#xff1a; 选择安装路径&#xff1a; 确认安装&#xff1a; 安装ing&…

图形学基础:二维三维刚体的移动、缩放和旋转矩阵

一、二维 1.1 缩放矩阵 x&#xff0c;y分别表示在x轴&#xff0c;y轴缩放的倍数 示例&#xff1a; 点(2,1)在x&#xff0c;y轴上分别缩放x倍&#xff0c;y倍 1.2 平移矩阵 x&#xff0c;y分表表示在x轴&#xff0c;y轴上移动的距离 示例&#xff1a;点&#xff08;2,1&#xf…

每日OJ题_BFS解决FloodFill④_力扣130. 被围绕的区域

目录 力扣130. 被围绕的区域 解析代码 力扣130. 被围绕的区域 130. 被围绕的区域 难度 中等 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 X 和 O &#xff0c;找到所有被 X 围绕的区域&#xff0c;并将这些区域里所有的 O 用 X 填充。 示例 1&#xff1a; 输入&…