LinearLayout

  • layout_gravity:组件在父容器里的对齐方式
  • gravity:组件包含的所有子元素的对齐方式
  • layout_weight:在原有基础上分配剩余空间,一般把layout_height都设置为0dp再使用此属性
  • 设置分割线可以用divider属性,或者插入View
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal|bottom"
android:divider="@drawable/ic_baseline_horizontal_rule_24"
android:showDividers="middle"
android:dividerPadding="20dp"
xmlns:android="http://schemas.android.com/apk/res/android"> <View android:layout_height="1dp"
android:layout_width="match_parent"
android:background="#ff0000"/> <LinearLayout android:layout_height="100dp"
android:layout_gravity="left"
android:layout_width="100dp"
android:background="#ff0000"/> <LinearLayout android:layout_height="100dp"
android:layout_width="100dp"
android:background="#00ff00"/> <LinearLayout android:layout_height="100dp"
android:layout_width="100dp"
android:background="#0000ff"/> </LinearLayout>

RelativeLayout

  • 可以根据父容器定位,也可以根据兄弟组件定位
  • margin设置组件与父容器的边距
  • padding设置组件内部元素的边距
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_height="match_parent"
android:layout_width="match_parent"
android:padding="10dp"
xmlns:android="http://schemas.android.com/apk/res/android"> <RelativeLayout
android:id="@+id/lt1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
android:background="#ff0000"/> <RelativeLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_above="@id/lt1"
android:layout_margin="100dp"
android:background="#00ff00"/> </RelativeLayout>

FrameLayout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"> <FrameLayout android:layout_height="300dp"
android:layout_width="300dp"
android:background="#ff0000"/> <FrameLayout android:layout_height="200dp"
android:layout_width="200dp"
android:foreground="@drawable/ic_baseline_language_24"
android:foregroundGravity="right|bottom"
android:background="#0000ff"/> <FrameLayout android:layout_height="100dp"
android:layout_width="100dp"
android:background="#00ff00"/> </FrameLayout>

TableLayout

  • collapseColumns:隐藏列,从0开始

  • stretchColumns:有剩余空间才会拉伸

android:collapseColumns="1,3"
android:stretchColumns="2"
  • shrinkColumns:有挤压的时候才能收缩
  • layout_column:显示在第几列
  • layout_span:横向跨几列
<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:layout_height="match_parent"
android:layout_width="match_parent"
android:shrinkColumns="2"
xmlns:android="http://schemas.android.com/apk/res/android"> <TableRow>
<Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_span="2"
android:text="按钮0"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_column="3"
android:text="按钮1"/>
</TableRow> <TableRow>
<Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="按钮0"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="按钮1"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="按钮2"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="按钮3"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="按钮4"/>
</TableRow> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="按钮0"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="按钮1"/> </TableLayout>

GridLayout

  • columnCount、rowCount:最大行列数,与orientation配合使用
  • layout_row、layout_column:显示所在行列
  • layout_columnWeight:横向剩余空间分配方式
  • layout_columnSpan:横向跨列,配合layout_gravity使用
<?xml version="1.0" encoding="utf-8"?>
<GridLayout android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="按钮0"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_row="1"
android:layout_column="0"
android:layout_columnSpan="3"
android:layout_gravity="fill"
android:text="按钮1"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_row="0"
android:layout_column="1"
android:text="按钮2"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="按钮3"/> <Button android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="按钮4"/>
</GridLayout>

ConstraintLayout

......

自定义布局

  • 创建一个标题布局title.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal"
android:background="#FFFF00"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:id="@+id/btn_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回"/> <TextView
android:text="标题"
android:layout_gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"/>
<Button
android:id="@+id/btn_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="菜单"/>
</LinearLayout>
  • 在onCreate()中关闭自带的标题栏
// 隐藏标题栏,使用自定义的
ActionBar actionBar = getSupportActionBar();
if (actionBar != null){
actionBar.hide();
}
  • 在activity_main.xml中引用布局文件
<include layout="@layout/title"/>

自定义控件

  • 也可以用控件的方式使用,TitleLayout.java
package com.example.myalterdialog;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast; import androidx.annotation.Nullable; public class TitleLayout extends LinearLayout {
public TitleLayout(Context context, @Nullable AttributeSet attrs) {
super(context, attrs); LayoutInflater.from(context) // 构建出一个LayoutInflater对象
.inflate(R.layout.title, this); // 第二个参数是给加载好的布局添加一个父布局
findViewById(R.id.btn_left).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "返回", Toast.LENGTH_SHORT).show();
}
});
findViewById(R.id.btn_right).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "菜单", Toast.LENGTH_SHORT).show();
}
});
}
}
  • activity_main.xml中使用自定义控件
<com.example.myalterdialog.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

布局(LinearLayout,RelativeLayout,FrameLayout,TableLayout,GridLayout,ConstraintLayout)的更多相关文章

  1. Android四种基本布局(LinearLayout \ RelativeLayout \ FrameLayout \ TableLayout)

    ------------------------------------------LinearLayout---------------------------------------------- ...

  2. android 基本布局(RelativeLayout、TableLayout等)使用方法及各种属性

        本文介绍 Android 界面开发中最基本的四种布局LinearLayout.RelativeLayout.FrameLayout.TableLayout 的使用方法及这四种布局中常用的属性. ...

  3. 浅谈Android五大布局——LinearLayout、FrameLayout、AbsoulteLayout、RelativeLayout和TableLayout

    Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建 筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLa ...

  4. Android精通:TableLayout布局,GridLayout网格布局,FrameLayout帧布局,AbsoluteLayout绝对布局,RelativeLayout相对布局

    在Android中提供了几个常用布局: LinearLayout线性布局 RelativeLayout相对布局 FrameLayout帧布局 AbsoluteLayout绝对布局 TableLayou ...

  5. Android UI -- 布局介绍(布局包括FrameLayout, LinearLayout, RelativeLayout, GridLayout)

    首先介绍常用布局类 FrameLayout 最简单的布局管理器. 这个布局管理类有几个特性: 添加组件默认在左上角的. 如果添加多个组件会叠加到一起,并且都在左上角.(可以通过一gravity属性改变 ...

  6. Android 五大布局(LinearLayout、FrameLayout、AbsoulteLayout、RelativeLayout、TableLayout )

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  7. android 学习 之 布局(下)LinearLayout,RelativeLayout,TableLayout,FrameLayout

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  8. 如何优化你的布局层级结构之RelativeLayout和LinearLayout及FrameLayout性能分析

    转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/51159419 如何优化你的布局层级结构之RelativeLayout和LinearLa ...

  9. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  10. [转]浅谈Android五大布局(二)——RelativeLayout和TableLayout

    在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局Relati ...

随机推荐

  1. 一群伪专家讨论“motherland”和“fatherland”,说说个人的观点

    看了一个视频: 中国的文化里在找妈,美国的文化里在找爸!如何真正教育子女? ============================================= ================ ...

  2. [学习笔记] 斜率优化DP - DP

    这个真的好容易啊 --wzw 斜率优化dP 例题 [SDOI2012] 任务安排 毒瘤题,让我惨淡经营了两天.这道题luogu有简单版,可以先去看简单版. 显然这是一只DP题,直接开始推狮子.令 dp ...

  3. SenseCraft 部署模型到Grove Vision AI V2图像处理模块

    Grove Vision AI V2 图像处理模块开箱测评 摘要 今天教大家快速上手 Grove Vision AI V2 图像处理模块,我们将一起探讨如何利用 SenseCraft 部署 AI 模型 ...

  4. 22.11.20 ICPC合肥站 打星记录

    A,B,H签到. B题:注意区分相对误差与绝对误差!!小数相对误差小于1e-6,至少要输出十二位! G题优先队列.场上十几分钟就想出来了,表扬自己一波,留个坑位写题解. M题情况不多直接暴搜, 最后一 ...

  5. 虚拟机中创建的centos网络ping不通 - ping unkown host

    一.查看虚拟机设置 二.su 进入超级管理员账户  ls /etc/sysconfig/network-scripts 查看虚拟机网络信息 第一个,每一个机器的配置文件名不同 进入到  network ...

  6. .NET 开源实时监控系统 - WatchDog

    前言 在平时的开发中随着我们系统应用不断地迭代变的复杂,对应用的实时监控变得越来越重要.实时监控不仅可以帮助我们快速定位问题,还能在出现问题时及时采取措施,减少业务中断的时间. 本文将介绍一个名为Wa ...

  7. 阿里云 SLS 模糊查询日志

    查询包含test前缀的词 1. 访问 https://sls.console.aliyun.com/lognext/profile 2. 在Project列表中找到对应的sls日志Project 3. ...

  8. Instant exceeds minimum or maximum instant

    使用 Instant.now().plusSeconds("xxxxx")报错  Instant exceeds minimum or maximum instant原因是取值范围 ...

  9. vue打包后dist的使用

    发现问题 vue项目完成打包出dist后准备打开index.html,发现居然页面是一片空白,f12一片报红. 分析问题 经过多次网上查询后发现这是由于vue打包时,脚手架会帮你配置好大量参数,但其中 ...

  10. 【YashanDB知识库】yasql登录报错:YAS-00413

    [问题分类]错误码处理 [关键字]yasql,00413 [问题描述]使用工具设置不同并发迁移数据的过程中,导致yasql登录报错:YAS-00413 [问题原因分析]工具使用与数据库使用资源超过了操 ...