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

news2024/11/18 13:37:28

文章目录

  • 使用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">
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="LAST"
        android:textSize="12sp"
     />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="NEXT"
        android:textSize="12sp"
       />
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="RELOAD"
        android:textSize="12sp"
        />
    <Button
        android: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">
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="LAST"
        android:textSize="12sp"

     />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="NEXT"
        android:textSize="12sp"
       />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="RELOAD CONTENT"
        android:textSize="12sp"
        />
    <Button
        android: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">
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="LAST"
        android:textSize="12sp"
     />
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="NEXT"
        android:textSize="12sp"
       />
    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="RELOAD CONTENT"
        android:textSize="12sp"
        />
    <Button
        android: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">
    <TextView
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:text="haosy" />
    <TextView
        android: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.coloradmin.cn/o/517367.html

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

相关文章

Baumer工业相机堡盟工业相机如何使用BGAPI SDK解决两个万兆网相机的同步采集不同步的问题

Baumer工业相机堡盟工业相机如何使用BGAPI SDK解决两个万兆网相机的同步采集不同步的问题 Baumer工业相机Baumer工业相机图像数据转为Bitmap的技术背景Baumer同步异常 &#xff1a;客户使用两个Baumer万兆网相机进行同步采集发现FrameID相同&#xff0c;但是图像不同步细节原因…

2023 年第八届数维杯数学建模挑战赛 A题详细思路

下面给大家带来每个问题简要的分析&#xff0c;以方便大家提前选好题目。 A 题 河流-地下水系统水体污染研究 该问题&#xff0c;初步来看属于物理方程类题目&#xff0c;难度较大。需要我们通过查阅相关文献和资料&#xff0c;分析并建立河流-地下水系统中有机污染物的对流、…

机器学习之聚类算法一

文章目录 一、简述1. 有监督和无监督的区别&#xff0c;以及应用实例2. 为什么是聚类3. 聚类都有哪些 二、k-means1.k-means&#xff0c;核心思想是什么1. 同一个簇内的样本点相似度较高&#xff0c;这里的相似度高&#xff0c;具体指什么2.问题来了&#xff1a;同一簇之间相似…

IP-Guard能否限制PC端微信登录?

能否限制PC端微信登录&#xff1f; 不能限制微信登录&#xff0c;但可以通过应用程序控制策略&#xff0c;禁止微信程序启动。 在控制台-【策略】-【应用程序】&#xff0c;添加以下策略&#xff1a; 动作&#xff1a;禁止 应用程序&#xff1a;wechat.exe 可以实现禁止微信启…

【python 多进程】零基础也能轻松掌握的学习路线与参考资料

学习python多进程可以帮助程序员充分利用CPU的性能&#xff0c;同时提高程序的并发性和响应能力。在学习python多进程前&#xff0c;需要具备一定的Python编程基础和对操作系统进程的基本了解。 一、Python多进程学习路线 基本概念 在学习python多进程之前&#xff0c;首先需…

C++基础之默认成员函数(构造函数,析构函数)

目录 空类中都有什么 默认成员函数 构造函数 简介 特性 注意 总结 析构函数 简介 特性 注意 总结 空类中都有什么 先看下面一段代码&#xff1a; class Date {};int main() {Date d1;std::cout << sizeof(Date) << std::endl;std::cout << sizeof(d1) <…

Linux之系统基本设置(四)

1、Linux 系统基本设置 1、系统时间管理 查看系统当前时间和时区 [root192 ~]# date 2023年 05月 04日 星期四 22:43:16 EDT [root192 ~]# date -R Thu, 04 May 2023 22:43:24 -0400 [root192 ~]# date %Y %m %d %H:%M:%S 2023 05 04 22:43:38设置完整时间 [root192 ~]# da…

基于html+css的图展示67

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Shell脚本文本三剑客之sed编辑器(拥明月入怀,揽星河入梦)

文章目录 一、sed编辑器简介二、sed工作流程三、sed命令四、sed命令的使用1.sed打印文件内容&#xff08;p&#xff09;&#xff08;1&#xff09;打印文件所有行&#xff08;2&#xff09;打印文件指定行 2.sed增加、插入、替换行&#xff08;a、i、c&#xff09;(1&#xff0…

【C++】类和对象()

&#x1f601;作者&#xff1a;日出等日落 &#x1f514;专栏&#xff1a;C 当你的希望一个个落空&#xff0c;你也要坚定&#xff0c;要沉着! —— 朗费罗 前言 面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注…

矿井水除氟系统CH-87的技术详解

今天&#xff0c;文章中会谈到的问题是关于煤化工废水深度处理除氟、总氮、砷等污染物工艺技术的拆解分析&#xff0c;用什么样的工艺技术能把矿井水中的氟、砷、总氮做到1个毫克升以下的标准符合达标排放&#xff1f;希望能对相关行业起到一定的帮助作用。我国是一个资源丰富的…

【开源项目】Disruptor框架介绍及快速入门

Disruptor框架简介 Disruptor框架内部核心的数据结构是Ring Buffer&#xff0c;Ring Buffer是一个环形的数组&#xff0c;Disruptor框架以Ring Buffer为核心实现了异步事件处理的高性能架构&#xff1b;JDK的BlockingQueue相信大家都用过&#xff0c;其是一个阻塞队列&#xf…

视觉错觉图像可逆信息隐藏

—————————————————————————————————————————————————————————— 文献学习&#xff1a;视觉错觉图像可逆信息隐藏 [1] Jiao S , Jun F . Image steganography with visual illusion[J]. Optics Express, 2021, 29(10…

【算法与数据结构】栈

栈 栈&#xff1a;结构定义 放入元素是从底向上放入 有一个栈顶指针&#xff0c;永远处在栈顶的元素 还需要标记栈大小的size 栈的性质&#xff1a; Fisrt-in Last-out (FILO) 先进后出 栈改变元素的顺序 栈&#xff1a;出栈 让栈顶指针向下移动一位 栈&#xff1a;入栈 …

【JavaEE】SpringMVC

目录 SpringMVC 获取连接 RequestMapping / GetMapping... 获取参数 获取querystring中的参数(获取表单数据基本相同) 获取URL中的参数 获取JSON对象 获取文件(通过表单) 获取Cookie 获取Header 获取Session 返回数据 返回数据 返回JSON对象 返回静态页面 请求…

云渲染时可以关机吗_云渲染电脑可以关闭吗?

云渲染可简单理解为放在云端的渲染农场&#xff0c;可区别于用户本地自己搭建的小型私有农场&#xff0c;用户只需将自己制作好的项目文件进行打包&#xff0c;通过 云渲染平台提供的客户端或网页端将文件上传到云端进行渲染。很多用户通过云渲染作业&#xff0c;解放了自己本地…

深耕5G+AIoT产业赛道,2023高通&美格智能物联网技术开放日隆重举行

5月11日&#xff0c;高通技术公司携手美格智能联合举办了“高通&美格智能物联网技术开放日”深圳站活动。大会现场&#xff0c;智能物联网行业合作伙伴齐聚一堂&#xff0c;围绕5GAIoT前沿技术&#xff0c;通过大咖专业的技术分享、落地应用介绍和现场丰富的产品展示&#…

Pytorch nn.Softmax(dim=?) 详解

本文参考自&#xff1a;Pytorch nn.Softmax(dim?) - 知乎 原文写得很好了&#xff0c;我这边另外完善了一些细节&#xff0c;让大家理解地更加直白一些。 可以先去看上面的参考文章&#xff0c;也可以直接看我这篇。 目录 1、tensor1 1&#xff09;已知该矩阵的维度为&am…

vue实现聊天框自动滚动

需求 1、聊天数据实时更新渲染到页面 2、页面高度随聊天数据增加而增加 3、竖向滚动 4、当用户输入聊天内容或者接口返回聊天内容渲染在页面后&#xff0c;自动滚动到底部 5、提供点击事件操控滚动条上下翻动 环境依赖 vue&#xff1a;vue…

两小时搭建属于自己的chatGPT(ChatGLM)免硬件(白嫖)

目录 准备&#xff08;注册&#xff09;: 搭建: API模式: 测试&#xff1a; 总结&#xff1a; 准备&#xff08;注册&#xff09;: 注册modelscope(白嫖)免费使用服务器 https://modelscope.cn/ 按照图片里的选择(选择其他好像不能创建成功) 可以白嫖60多个小时的配置 8…