Android Studio中android: baselineAligned属性认识及用途

news/2024/11/7 3:41:00/

文章目录

  • 使用Button控件来演示
  • 使用TextView控件来演示

android:baselineAligned 设置子元素都按照基线对齐,默认是true

使用Button控件来演示

在项目中经常使用layout_weight属性利用比重来设置控件的大小,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- LinearLayoutCompat其实就是LinerLayout组件,只是为了兼容低版本-->
<androidx.appcompat.widget.LinearLayoutCompat 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"android:orientation="horizontal"tools:context=".MainActivity"><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="LAST"android:textSize="12sp"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="NEXT"android:textSize="12sp"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="RELOAD"android:textSize="12sp"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="EXIT"android:textSize="12sp"/>
</androidx.appcompat.widget.LinearLayoutCompat>

在这里插入图片描述
可以看到4个button各占LinearLayout布局宽度的1/4,而且是上边缘和下边缘都是对齐的,是我们预期想要的效果。
然而把第三个按钮的内容变长,会变成如下的效果:

<?xml version="1.0" encoding="utf-8"?>
<!-- LinearLayoutCompat其实就是LinerLayout组件,只是为了兼容低版本-->
<androidx.appcompat.widget.LinearLayoutCompat 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"android:orientation="horizontal"tools:context=".MainActivity"><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="LAST"android:textSize="12sp"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="NEXT"android:textSize="12sp"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="RELOAD CONTENT"android:textSize="12sp"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="EXIT"android:textSize="12sp"/>
</androidx.appcompat.widget.LinearLayoutCompat>

在这里插入图片描述
会发现第三个内容由于长度超过LinearLayout宽度的1/4,会换行,这个是正常的,但是却发现整个button位置下移了,没有和其他三个button对齐,很丑,这是怎么回事呢,仔细看button中text会发现Next和第三个button中text第一行是位于一条水平线上的,这个水平线其实就是所谓的baseline,查看Android develper的LinearLayout的API会发现有一个属性:android:baselineAligned,这个属性默认是true,所以LinearLayout里面的子View默认是baseline 对齐的,这就会导致第三个button第一行为了和其他button的text对齐下移。
在这里插入图片描述
上面的那条自己画的红线,就是基线。
为了能使四个button对齐,就将android:baselineAligned设置为false。

<?xml version="1.0" encoding="utf-8"?>
<!-- LinearLayoutCompat其实就是LinerLayout组件,只是为了兼容低版本-->
<androidx.appcompat.widget.LinearLayoutCompat 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"android:orientation="horizontal"android:baselineAligned="false"tools:context=".MainActivity"><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="LAST"android:textSize="12sp"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="NEXT"android:textSize="12sp"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="RELOAD CONTENT"android:textSize="12sp"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="EXIT"android:textSize="12sp"/>
</androidx.appcompat.widget.LinearLayoutCompat>

在这里插入图片描述
所以我们可以看到4个按钮的上边缘对齐了,为啥第三个按钮的下边缘变长了,因为我们设置的Button的高度属性layout_height为wrap_content,即根据内容来撑开的。所以当内容变长时,按钮的下边缘就会自动延伸。

使用TextView控件来演示

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- LinearLayoutCompat其实就是LinerLayout组件,只是为了兼容低版本-->
<androidx.appcompat.widget.LinearLayoutCompat 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"android:orientation="horizontal"android:baselineAligned="false"tools:context=".MainActivity"><TextViewandroid:id="@+id/view1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="5dp"android:text="haosy" /><TextViewandroid:id="@+id/view2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="5dp"android:textSize="30sp"android:text="北京追梦孩"/>
</androidx.appcompat.widget.LinearLayoutCompat>

当android:baselineAligned="false"时
在这里插入图片描述
当android:baselineAligned="true"时
在这里插入图片描述


http://www.ppmy.cn/news/68035.html

相关文章

涉及lvm分区的命令使用

pv命令 pvdisplay #查看物理卷 pvcreate 分区路径 #创建物理卷 pvremove 分区路径 #删除物理卷 vg命令 vgdisplay #查看卷组 vgcreate 卷组名称 #创建卷组 vgextend 卷组名称 分区路径 #将分区加入某个卷组 vgremove 卷组名称 #删…

【文本三剑客】AWK

AWK 一、AWK的工作原理1.1命令格式1.2awk常见的内建变量 二、awk实验2.1按行输入文本2.2按字段输出文本2.3通过管道符、双引号调用shell命令 一、AWK的工作原理 逐行读取文本&#xff0c;默认以空格或tab键为分隔符进行分隔&#xff0c;将分隔所得的各个字段保存到内建变量中&…

python队列

简介 使用队列方法进行多线程之间的信息交互 队列 队列 First in First out可以存储不同的数据类型&#xff0c;例如整数、字符串、字典使用put放数据使用get取数据&#xff08;如果当前队列中没有数据&#xff0c;此时会堵塞&#xff09; import queueq queue.Queue() q.…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(I.MX6U驱动GPIO中断《包括时钟讲解》) 2023.5.9

目录 前言整体文件结构源码分析&#xff08;保姆级讲解&#xff09;中断初始化部分初始化GIC控制器初始化中断向量表设置中断向量表偏移 系统时钟初始化部分使能所有的时钟部分led初始化部分beep初始化部分key初始化部分按键中断初始化部分按键中断服务函数部分 while循环部分 …

【啃书C++Primer5】-c++有些理论基础需要了解,墙裂建议看看原书,有太多细节需要注意了

任何常用的编程语言都具备一组公共的语法特征&#xff0c;不同语言仅在特征的细节上有所区别。要想学习并掌握–种编程语言&#xff0c;理解其语法特征的实现细节是第一步。最基本的特征包括: 整型、字符型等内置类型变量&#xff0c;用来为对象命名 表达式和语句&#xff0c;…

将自己写的nginx.conf运行到阿里云linux服务器上

首先 你要保证自己的nginx.conf没有问题 可以先在本地运行一下 然后来到nginx.conf文件的所在目录 利用 scp -r ./nginx.conf 用户名(如果之前没设置过就是 root)服务器公网地址:/etc/nginx/将文件传到服务器上去 这里需要注意 如果你的服务器之前没有装过nginx 是没有这个目…

数据结构学习记录——集合及运算(集合的表示、并查集、树结构表示集合、集合运算、查找函数、并运算)

目录 集合的表示 集合运算概述 并查集 树结构表示集合 集合运算 查找函数 并运算 集合的表示 集合运算概述 交、并、补、差&#xff0c;判定一个元素是否属于某一个集合 并查集 集合并、查某元素属于什么集合 我们最主要关心的就是集合的两个运算&#xff0c;一个是把…

python 生成设施农用地各类材料,并调用python2进行出图

python 生成设施农用地各类材料&#xff0c;并调用python2进行出图 -- coding: utf-8 -- import win32com.client from win32com.client import Dispatch import os, sys, glob #import traceback, shapefile from openpyxl import load_workbook, Workbook import openpyxl,…