Android基础学习笔记8:常用布局 - 线性布局

这篇具有很好参考价值的文章主要介绍了Android基础学习笔记8:常用布局 - 线性布局。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习目标

能说出安卓界面元素层次
能说出安卓常用的布局
能说出线性布局常用的属性
能利用线性布局实现简单的界面设计
能利用线性布局嵌套实现比较复杂的界面
安卓线性布局,Android基础,android,学习,ui

一、界面与布局概述

(一)界面

应用界面包含用户可查看并与之交互的所有内容。安卓提供丰富多样的预置 UI 组件,例如结构化布局对象和 UI 控件,您可以利用这些组件为您的应用构建图形界面。安卓还提供其他界面模块,用于构建特殊界面,例如对话框、通知和菜单。

(二)布局

布局可定义应用中的界面结构(例如 Activity 的界面结构)。布局中的所有元素均使用 View 和 ViewGroup 对象的层次结构进行构建。View 通常绘制用户可查看并进行交互的内容。然而,ViewGroup 是不可见容器,用于定义 View 和其他 ViewGroup 对象的布局结构。

1、视图层次结构图

安卓线性布局,Android基础,android,学习,ui

2、UI容器 (Container)

UI容器指ViewGroup,也是View的子类,而ViewGroup有几个布局子类:LinearLayout、RelativeLayout、AbsoluteLayout、TableLayout、GridLayout,ConstraintLayout。
安卓线性布局,Android基础,android,学习,ui

3、UI控件 (Control)

UI控件指Widget(微件),不能再包含其它元素的控件,例如标签(TextView)、文本框(EditText)、按钮(Button)、 活动栏(Action Bar)、对话框(Dialogs)、状态栏(Status)、通知(Notifications)。

4、两种方式声明布局

在 XML 中声明界面元素:Android 提供对应 View 类及其子类的简明 XML 词汇,如用于微件和布局的词汇。也可使用 Android Studio 的 Layout Editor,并采用拖放界面来构建 XML 布局。
在运行时实例化布局元素:应用可通过编程创建 View 对象和 ViewGroup 对象(并操纵其属性)。
安卓线性布局,Android基础,android,学习,ui

二、线性布局概述

线性布局(LinearLayout)是一种比较常用且简单的布局方式。在这种布局中,所有的子元素都是按照垂直或水平的顺序排列在界面上。如果是垂直排列,每个子元素占一行,如果是水平排列,则每个子元素占一列。线性布局可以支持布局样式嵌套实现复杂的布局样式。

(一)继承关系图

安卓线性布局,Android基础,android,学习,ui

(二)常用属性

layout_width:布局宽度(match_parent,wrap_conent)
layout_height:布局高度(match_parent,wrap_conent)
orietation:方向(vertical,horizontal)
gravity:对齐方式(left, right, center, top, bottom…)
background:背景(颜色、图片、选择器)
weight:比重(用于瓜分手机屏幕)
padding:内边距 (paddingLeft, paddingRight, paddingTop, paddingBottom)
margin:外边距 (marginLeft, marginRight, marginTop, marginBottom)

三、案例演示 —— 线性布局属性

1、创建安卓应用【LinearLayoutDemo】

2、主布局资源文件activity_main.xml

安卓线性布局,Android基础,android,学习,ui

将约束布局改成线性布局
安卓线性布局,Android基础,android,学习,ui

添加两个按钮
安卓线性布局,Android基础,android,学习,ui

3、启动应用,查看效果

安卓线性布局,Android基础,android,学习,ui

设置线性布局的方向 - orientation
安卓线性布局,Android基础,android,学习,ui

启动应用,查看效果

安卓线性布局,Android基础,android,学习,ui

设置内边距 - padding

安卓线性布局,Android基础,android,学习,ui

启动应用,查看效果
安卓线性布局,Android基础,android,学习,ui

设置线性布局的对齐方式 - gravity

left、right、center搭配,共有九种对齐方式

线性布局gravity的默认值是left|top——左上

右上对齐 - right|top
安卓线性布局,Android基础,android,学习,ui

启动应用,查看效果
安卓线性布局,Android基础,android,学习,ui

右中对齐 - right|center
安卓线性布局,Android基础,android,学习,ui

右下对齐 - right|bottom
安卓线性布局,Android基础,android,学习,ui

水平居中 - center_horizontal,相当于center|top
安卓线性布局,Android基础,android,学习,ui

垂直居中 - center_vertical,相当于left|center
安卓线性布局,Android基础,android,学习,ui

居中对齐 - center
安卓线性布局,Android基础,android,学习,ui

背景属性(背景色、背景图片、背景配置文件)

设置背景色
安卓线性布局,Android基础,android,学习,ui

启动应用,查看效果
安卓线性布局,Android基础,android,学习,ui

设置背景图片
安卓线性布局,Android基础,android,学习,ui

启动应用,查看效果
安卓线性布局,Android基础,android,学习,ui

在第二个按钮下添加一个线性布局
安卓线性布局,Android基础,android,学习,ui

在drawable目录里创建自定义边框配置文件customer_border.xml
安卓线性布局,Android基础,android,学习,ui

<?xml version="1.0" encoding="utf-8"?>
<corners android:radius="10dp" />
<solid android:color="#04be02" />
<stroke
    android:width="1dp"
    android:color="#555555" />

启动应用,查看效果
安卓线性布局,Android基础,android,学习,ui

设置过渡色效果
安卓线性布局,Android基础,android,学习,ui

四、案例演示 —— 线性布局嵌套

1、创建安卓应用【NestedLinearLayout】

2、将三张小图片拷贝到res/drawable目录

3、布局资源文件activity_main.xml

安卓线性布局,Android基础,android,学习,ui

将约束布局改成线性布局,设置方向属性
安卓线性布局,Android基础,android,学习,ui

添加第一个线性布局
安卓线性布局,Android基础,android,学习,ui

添加第二个线性布局
安卓线性布局,Android基础,android,学习,ui

添加第三个线性布局
安卓线性布局,Android基础,android,学习,ui

运行程序,查看结果(三个子布局按照1:2:3垂直瓜分手机屏幕)
安卓线性布局,Android基础,android,学习,ui

在第一个布局里添加三个图像控件
安卓线性布局,Android基础,android,学习,ui

第二个线性布局里再嵌套一个横向的线性布局,里面添加三个按钮
安卓线性布局,Android基础,android,学习,ui

在第二个线性布局里再添加一个编辑框
安卓线性布局,Android基础,android,学习,ui

启动应用,查看效果
安卓线性布局,Android基础,android,学习,ui

本来三个子布局按照1:2:3比例垂直瓜分手机屏幕,但是在第二个子布局里添加子控件之后,瓜分比例就发生变化了,第二个子布局瓜分比例超过了第三个子布局,怎么才能保持原先的瓜分比例呢?
将三个子布局的layout_height属性值统统设置为0dp
安卓线性布局,Android基础,android,学习,ui
安卓线性布局,Android基础,android,学习,ui
安卓线性布局,Android基础,android,学习,ui

启动应用,查看效果
安卓线性布局,Android基础,android,学习,ui

第三个线性布局再添加三个线性布局
安卓线性布局,Android基础,android,学习,ui

启动应用,查看效果
安卓线性布局,Android基础,android,学习,ui

在第三个线性布局嵌套的第一个子布局里添加三个按钮
安卓线性布局,Android基础,android,学习,ui

在第三个线性布局嵌套的第二个子布局里添加两个按钮
安卓线性布局,Android基础,android,学习,ui

在第三个线性布局嵌套的第二个子布局里添加三个按钮
安卓线性布局,Android基础,android,学习,ui

4、启动应用,查看效果

紫色部分太窄,按钮显示不好看
安卓线性布局,Android基础,android,学习,ui

将紫色部分与蓝色部分的瓜分比例交换
安卓线性布局,Android基础,android,学习,ui

查看布局资源文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="#ffff00"
    android:gravity="center"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/imgSun"
        android:layout_width="45dp"
        android:layout_height="46dp"
        android:src="@drawable/img01" />

    <ImageView
        android:id="@+id/imgMoon"
        android:layout_width="30dp"
        android:layout_height="47dp"
        android:src="@drawable/img02" />

    <ImageView
        android:id="@+id/imgStar"
        android:layout_width="38dp"
        android:layout_height="50dp"
        android:src="@drawable/img03" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="2"
    android:background="#00ff00"
    android:gravity="center"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <Button
            android:id="@+id/btnSunInvisbile"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮1" />

        <Button
            android:id="@+id/btnSunGone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮2" />

        <Button
            android:id="@+id/btnSunVisible"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮3" />

        <Button
            android:id="@+id/btnSunToFlower"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮4" />
    </LinearLayout>

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:background="#aaaaaa"
        android:ems="10"
        android:inputType="textMultiLine"
        android:lines="5"
        android:padding="10dp"
        android:scrollbarStyle="outsideOverlay"
        android:scrollbars="vertical"
        android:text="演示线性布局的嵌套:横向的、纵向的布局可以相互嵌套,形成比较复杂的布局。" />

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="3"
    android:background="#0000ff"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="#ffff00"
        android:gravity="center"
        android:orientation="vertical">

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮2" />

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮3" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:background="#ff00ff"
        android:gravity="center"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button11"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮1" />

        <Button
            android:id="@+id/button12"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮2" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:gravity="center"
        android:orientation="vertical">

        <Button
            android:id="@+id/button7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮1" />

        <Button
            android:id="@+id/button8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮2" />

        <Button
            android:id="@+id/button9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按钮3" />
    </LinearLayout>
</LinearLayout>

五、案例演示 - 用户登录界面

(一)运行效果

安卓线性布局,Android基础,android,学习,ui

(二)实现步骤

1、创建安卓应用【UserLogin】

2、将图片素材拷贝到drawable目录

3、主布局资源文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1.56"
    android:background="#0a0943"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_marginTop="90dp"
        android:layout_weight="1.4"
        android:background="@drawable/login_txt_icon" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_marginTop="20dp"
        android:layout_weight="1"
        android:background="@drawable/login_title_bg" />
</LinearLayout>

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginTop="-20dp"
    android:layout_marginBottom="20dp"
    android:background="@drawable/login_icon" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="350dp"
        android:layout_height="wrap_content"
        android:background="@drawable/input_bg"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:background="@drawable/username_icon" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:background="@null"
            android:hint="@string/input_username" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="350dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:background="@drawable/input_border"
        android:gravity="center_vertical">

        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:background="@drawable/password_icon" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:background="@null"
            android:hint="请输入您的密码 | password" />
    </LinearLayout>

    <Button
        android:layout_width="350dp"
        android:layout_height="60dp"
        android:layout_marginTop="20dp"
        android:background="@drawable/button_border"
        android:text="登录"
        android:textColor="#ffffff"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="@string/copyright" />
</LinearLayout>

4、字符串资源文件strings.xml

用户登录 请输入您的用户名 | username COPYRIGHT 20200107 JIANGWEI TEC.CO.LTD. V1.10 ### 5、创建输入边框配置文件 input_border.xml <?xml version="1.0" encoding="utf-8"?> ### 6、创建按钮背景边框配置文件 button_border.xml <?xml version="1.0" encoding="utf-8"?>

7、修改样式文件,不显示活动栏

安卓线性布局,Android基础,android,学习,ui

8、启动应用,查看效果

安卓线性布局,Android基础,android,学习,ui文章来源地址https://www.toymoban.com/news/detail-744312.html

到了这里,关于Android基础学习笔记8:常用布局 - 线性布局的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Android学习笔记】Android布局属性大全

    第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘 android:layout_alignParentLeft 贴紧父元素的左边缘 android:layout_alignParentRight 贴紧父元素的右边缘

    2024年01月16日
    浏览(27)
  • 安卓学习笔记:安卓11访问/读写 Android/data 目录

    省流提示:采用android studio工具开发,记录一次低级的开发,避免以后忘记或者踩坑。 最近有个业余项目开发到一小半,过程中需要读写 Android/data目录的文件,采用常规的文件操作总是提示权限被拒绝,无奈上网参考了很多资料,终于得到了解决。 无法访问Android/data 的原因

    2024年02月13日
    浏览(34)
  • 【Android】UI布局之线性布局(登录界面代码)

    1、布局管理 组件在activity中呈现的方式,包含组件大小、间距、对齐方式 Android提供了两种布局的实现方式: .在xml配置文件中声明,通过setContentView(R.layout.main)方法呈现在activity中,通过findViewById()方法获得组件实例。(一般推荐这种方式) 动态生成组件以及设置相关布局

    2024年02月11日
    浏览(37)
  • 安卓Android 架构模式及UI布局设计

    Android UI 设计是指在Android应用程序中创建用户界面的过程。这涉及到使用XML布局文件定义界面元素的位置和外观,以及通过Java或Kotlin代码处理用户交互。Android UI设计包括使用各种视图组件(如按钮、文本框、列表等)和布局管理器(如线性布局、相对布局等)来构建用户友

    2024年04月13日
    浏览(39)
  • android计算器界面布局线性布局跨2行,使用Kotlin高效地开发Android App(一,GitHub标星3.2K

    get(url).placeholder(R.drawable.shape_default_round_bg) .error(R.drawable.shape_default_round_bg) // .apply(RequestOptions.bitmapTransform(RoundedCornersTransformation(DisplayUtil.dp2px(context, 6f), 0))) .transform(RoundedCornersTransformation(DisplayUtil.dp2px(context, 6f), 0)) .into(this) } /** 占位符圆形 */ fun ImageView.loadCircle(url: Drawable) {

    2024年04月11日
    浏览(34)
  • Android常用布局之TableLayout(表格布局)

    TableLayout(即表格布局) 当TableLayout下面写控件、则控件占据一行的大小。(自适应一行,不留空白) 但是, 想要多个组件占据一行 ,则配合 TableRow 实现 TableLayout 继承 自LinearLayout, 因此它 完全支持 LinearLayout所支持的属性,此外,它还有其他的常用属性。 属性名称 功能描述 an

    2023年04月09日
    浏览(31)
  • Android常用布局之FrameLayout(帧布局)

    FrameLayout(帧布局)可以说是六大布局中最为简单的一个布局,这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的 左上角, 而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中最大的子控件

    2023年04月10日
    浏览(79)
  • Android studio下的线性布局(LinearLayout)与水平布局(ReativeLayout)详细解析+典型例子及其代码

    一:线性布局 线性布局有水平线性布局: android :orientation =\\\"horizontal\\\" ; 和垂直线性布局: android :orientation =\\\"vertical\\\" 两种布局。 当代码表示 android :orientation =\\\"horizontal\\\" 时, 表示这个布局下的所有子元素都要水平方向排列。 当代码表示 android :orientation =\\\"verticall\\\" 时, 表示这个布

    2024年02月09日
    浏览(37)
  • 安卓学习笔记之五:Android Studio_骰子案例3(Kotlin搭配 Jetpack Compose实现)

    使用 Compose 创建一款交互式  Dice Roller  Android 应用。 完成: 定义可组合函数。 使用组合创建布局。 使用  Button  可组合项创建按钮。 导入  drawable  资源。 使用  Image  可组合项显示图片。 使用可组合项构建交互式界面。 使用  remember  可组合项将组合中的对象存储到内

    2024年02月20日
    浏览(40)
  • Android实训1_动物连连看游戏界面制作_线性布局

    实训1  动物连连看游戏界面制作 【实训名称】 动物连连看游戏界面制作 【实训效果】 【实训目的】 掌握Android中线性布局的使用 【实训素材】 drawable-hdpi文件夹: 【实训素材CSDN资源链接】 https://download.csdn.net/download/xiaohui_student/88351533?spm=1001.2014.3001.5503 【准备工作】 创建

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包