Android Studio新手开发双双一天

目录

1.线性布局LinearLayout

1.1布局方向orientation

1.2权重分配layout_weight


1.线性布局LinearLayout

线性布局类似于用一根线将内部的视图串连起来,内部视图的排列顺序是固定的,要么从上到下,要么从左到右两种排列方式。

Linearlayout核心属性表:

属性类别属性名称作用与说明
布局方向android:orientation决定子视图的排列方向:horizontal(水平)或 vertical(垂直)
内部对齐android:gravity设置LinearLayout内部所有子视图的对齐方式(如居中、靠右)
子视图对齐android:layout_gravity设置在父容器内,单个子视图自身的对齐方式。
权重分配android:layout_weight

为子视图分配剩余空间的权重,值越大,分到的剩余空间越多

权重总和android:weightSum

定义LinearLayout权重分配的最大总和。若子视图权重和超过此值,以此值为准。

1.1布局方向orientation

        orientation有两个属性值分别为horizontal(水平)与vertical(垂直),该属性决定内部视图的排列方向。若不指定该属性则默认为水平方向排列即android:orientation="horizontal"。

        下面的代码中一个线性布局中包含两个线性布局,外部的线性布局为垂直方向排列,内部的线性布局分别为垂直于水平排列。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="垂直——1"
            android:textSize="20sp"
            android:background="@color/red"/>

        <TextView
            android:id="@+id/textView_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="垂直——2"
            android:textSize="20sp"
            android:background="@color/red"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="水平——1"
            android:textSize="20sp"
            android:background="@color/red"/>

        <TextView
            android:id="@+id/textView_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="水平——2"
            android:textSize="20sp"
            android:background="@color/red"/>

    </LinearLayout>

</LinearLayout>

这是上述代码的效果图,可以看出在内部的线性布局的两个TextView的大小是一样的,如果想要两者按比例分配大小的话就需要用到线性布局的另一个属性android:layout_weight。

1.2权重分配layout_weight

        layout_weight属性取值为数字,代表着该视图能够分配到的权重大小。如下面的代码所示,当要设置权重时,有两个方向的权重水平以及垂直。当android:layout_height="0dp"时表示在垂直方向上做权重分配,此时的android:layout_weight设置的值代表着该视图的权重大小,可以理解为占比,比如一个权重大小为1,另一个为3,那么可以将Linearlayout在垂直方向上分割为四份,一份给权重为1的,三份给权重为3的。水平方向上的权重分配类似。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView_1"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="垂直——1"
            android:textSize="20sp"
            android:background="@color/red"/>

        <TextView
            android:id="@+id/textView_2"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="3"
            android:gravity="center"
            android:text="垂直——2"
            android:textSize="20sp"
            android:background="@color/purple_700"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="400dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView_3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:gravity="center"
            android:text="水平——1"
            android:textSize="20sp"
            android:background="@color/red"/>

        <TextView
            android:id="@+id/textView_4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="水平——2"
            android:textSize="20sp"
            android:background="@color/purple_700"/>

    </LinearLayout>

</LinearLayout>

下面是效果图。可以看出不像前面两个视图大小一致,两个视图按比例1:3分配线性布局大小。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值