美文网首页
线性布局(LiearLayout)

线性布局(LiearLayout)

作者: fastcv | 来源:发表于2019-07-03 19:22 被阅读0次

前言

根据名字,我们可以大概的猜到,这种布局方式是屏幕垂直或水平方向布局(线性),线性布局在开发中使用最多,具有垂直方向与水平方向的布局方式,通过设置属性“android:orientation”控制方向,属性值垂直(vertical)和水平(horizontal),默认水平方向。(结合大佬们的博客总结的,如有侵权,麻烦联系我删除此文章)

属性

除orientation之外还有以下常用属性:

属性 说明
android:gravity 内部控件对齐方式,常用属性值有center、center_vertical、center_horizontal、top、bottom、left、right等。这里要与android:layout_gravity区分开,layout_gravity是用来设置自身相对于父元素的布局。
android:layout_weight 权重,用来分配当前控件在剩余空间的大小。正常情况下,值越大占据高度或宽度越大。例外的情况,在LineayLayout布局中使用这个属性时需要注意: 当水平方向布局且子控件的宽度为fill_parent或match_parent时,值越小占据宽度越大,垂直方向也一样。
weightSum 用于指定该父类容器的空间分成几份

对齐方式

名称 效果
left
right
center 中间
bottom 底部
center_vertical 竖直居中
center_horizontal 水平居中
center_horizontal | right 可以组合搭配

举例

实现登录界面

我们实现一个登陆界面:

login.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:weightSum="4"
        android:layout_margin="30dp"
        android:layout_height="50dp">
        
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Account:"
            android:layout_height="match_parent" />

        <EditText
            android:layout_width="0dp"
            android:layout_weight="3"
            android:hint="请输入账户名"
            android:layout_height="match_parent" />


    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:weightSum="4"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_height="50dp">

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Password:"
            android:layout_height="match_parent" />

        <EditText
            android:layout_width="0dp"
            android:layout_weight="3"
            android:hint="请输入密码"
            android:layout_height="match_parent" />

    </LinearLayout>
    
    <Button
        android:layout_width="300dp"
        android:text="登录"
        android:layout_marginTop="30dp"
        android:layout_gravity="center_horizontal"
        android:layout_height="50dp" />

</LinearLayout>

示意图:

linearlayout_login.PNG

附加

1、权重加上match_parent时的问题

当水平方向布局且子控件的宽度为fill_parent或match_parent时,值越小占据宽度越大,垂直方向也一样。这里出现这种情况主要是因为match_parent或fill_parent引起的,系统先给第一个子控件分配parent_width(剩余空间),再给第二个分配parent_width,即分配了两个parent_width,此时剩余为parent_width-2parent_width=-parent_width,这里主要问题就在这里,剩余控件其实已经为一个负数了。接着,第一个控件占宽度:parent_width(当前已有宽度)+权重1/3(-parent_width)=2/3parent_width;第二个控件占宽度:parent_width+权重2/3(-parent_width)=1/3parent_width,所以当宽度都是match_parent时,剩余空间则为负数,谁的权重大谁就会减去越多。

相关文章

  • 线性布局(LiearLayout)

    前言 根据名字,我们可以大概的猜到,这种布局方式是屏幕垂直或水平方向布局(线性),线性布局在开发中使用最多,具有垂...

  • 安卓原生页面布局总结

    布局分为线性布局:LinearLayout和相对布局:RelativeLayout 线性布局:LinearLayo...

  • Android之布局

    LinearLayout - 线性布局 线性布局,最常用的布局之一,所有包含在线性布局里的控件在线性方向上依次排列...

  • Android应用界面开发——第二周笔记

    线性布局 线性布局是程序中常见的布局方式之一,包括水平线性布局和垂直线性布局两种, 通过Android:orien...

  • 常用的五大布局

    常用的五大布局(线性布局,相对布局,帧布局,表格布局,绝对布局) 1,线性布局 LinearLayout ...

  • 3.1 布局类Widget-线性布局Row和Column

    线性布局Row和Column弹性布局Felx 线性布局Row和Column 所谓线性布局,即指沿水平或垂直方向排布...

  • 四大layout

    LinerLayout 线性布局 LinerLayout, 中文名为线性布局。这个布局会将它所包含的控件在线性方向...

  • 布局 - 线性布局

    LinearLayout 线性布局 线性布局是一种非常常用的布局,控件在该布局中按线性方向依次排列。 属性 and...

  • 2019-03-15

    实验内容:关于线性布局、约束布局及表格布局的使用 主要代码: 主界面: 线性布局: 约束布局: 表格布局: 截图:...

  • 安卓布局详解

    今天要讲的布局就是线性布局、相对布局和约束布局 1.LinearLayout: -线性布局,两种排法:水平and...

网友评论

      本文标题:线性布局(LiearLayout)

      本文链接:https://www.haomeiwen.com/subject/exzchctx.html