三种Android布局方式:LinearLayout

2024-03-23 07:08

本文主要是介绍三种Android布局方式:LinearLayout,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LinearLayout线性布局

控件的排列方式:垂直排列、水平排列

android:orientation 属性:

可选值为 vertical (垂直的)和 horizontal (水平的)

     

如果不指定 android:orientation 默认值是 horizontal (水平)

如果排列方式是水平,则控件宽度不能设置成match_parent。

android:layout_gravity  属性和 android:gravity 属性不同:

android:gravity:指的是文字在控件中的对齐方式

android:layout_gravity :指的是控件在布局中的对齐方式

当LinearLayout的排列方向是horizontal时,只有垂直方向上的对齐方式才会生效,因为此时水平方向上的长度是不固定的。

同样的道理,当LinearLayout的排列方向是vertical时,只有水平方向上的对齐方式才会生效。

还有一个重要属性:android:layout_weight

允许我们使用比例的方式来控制控件的大小。它在手机屏幕的适配性方面可以起到非常重要的作用。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><EditTextandroid:id="@+id/input_message"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:hint="Type something"/><Buttonandroid:id="@+id/send"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="Send"/>
</LinearLayout>

效果如图:

 实现原理很简单,Activity会将所有的android:layout_weight相加起来,然后每个控件所占大小的比例就是用该控件的layout_weight值除以刚才算出的总值。

我们同样可以设置部分其他控件的宽度,来实现更好的效果,对于上述,我们可以修改button 的 width,写成:

    <Buttonandroid:id="@+id/send"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="Send"/>

得到的效果如图:

 RelativeLayout相对布局

与线性布局不同,相对布局更加随意,通过相对定位的方式进行布局。

相对父布局定位:

    <Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 1"android:layout_alignParentTop="true"android:layout_alignParentLeft="true" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 2"android:layout_alignParentBottom="true"android:layout_alignParentLeft="true" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 3"android:layout_alignParentTop="true"android:layout_alignParentRight="true" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 4"android:layout_alignParentBottom="true"android:layout_alignParentRight="true" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 5"android:layout_centerInParent="true" />

效果如图:

 所用到的属性为:

android:layout_alignParentLeft、android:layout_alignParentTop、android:layout_alignParentRight、android:layout_alignParentBottom、android:layout_centerInParent

还可以相对于控件进行定位:相对于控件进行布局需要对每一个控件设置一个  id

所用到的属性有:layout_above(id)、layout_below(id)、layout_toRightOf(id)、layout_toLeftOf(id)

当运用到某个id时,要按顺序,否则会找不到id!!

还有另一组对齐的属性:android:layout_alignLeft、android:layout_alignRight、android:layout_alignTop、android:layout_alignBottom

分别为与某个控件的左边缘、右边缘、顶边缘、底边缘对齐。

FrameLayout帧布局

定位方式欠缺:这种布局没有丰富的定位方式,所有的控件都会默认摆放在布局的左上角。

这篇关于三种Android布局方式:LinearLayout的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/837523

相关文章

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page