【安卓基础】使用Guideline与约束辅助布局的平分空间设计

ConstraintLayout布局已经推出了很长一段时间,功能也是比较强大,能有效减少界面的视图层级嵌套,一定程度提升界面绘制效率。

在项目中,我也是最近才选择开始使用ConstraintLayout,之前一直用的是LinearLayout + FrameLayout进行复杂布局。

在使用ConstraintLayout的时候遇到了一个问题,需要在水平方向平分空间给三个视图,之前只是简单了解约束布局的使用,并没有真正去在实战中使用。在后面的查阅文档和实践中,总结了三等分水平空间可以有下面两种办法:

ConstraintLayout约束参数:

1. 首先按照约束规则将需要平分空间的视图建立相互约束链条,一定要相互约束(第一个视图右边依赖第二个视图左边,第二个视图左边依赖第一个视图右边,第二个视图右边依赖第三个视图左边......)

2. 为每个视图加上app:layout_constraintHorizontal_weight属性,设置为1即可水平平分空间(layout_constraintHorizontal_weight作用类似于LinearLayout的weight属性,可以不设置此属性,默认为1)

<android.support.constraint.ConstraintLayout 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"
    tools:context=".surface.impl.message.ActivityMessage">

    <FrameLayout
        android:id="@+id/ucContentArea"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/ucContentArea2"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </FrameLayout>

    <FrameLayout
        android:id="@+id/ucContentArea2"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@id/ucContentArea"
        app:layout_constraintRight_toLeftOf="@id/ucContentArea3"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </FrameLayout>

    <FrameLayout
        android:id="@+id/ucContentArea3"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@id/ucContentArea2"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </FrameLayout>

</android.support.constraint.ConstraintLayout>

使用Guideline辅助布局的设计

1. 使用Guideline可以在界面上任何位置(支持精确位置,百分比位置)创建一条水平或者垂直的参考系,Guideline其实就是一个不绘制任何内容的View,子视图通过约束参数可以相对于Guideline进行位置布局。

2. Guideline只需要关注:android:orientation、app:layout_constraintGuide_percent、app:layout_constraintGuide_begin、app:layout_constraintGuide_end这四个参数。

3. orientation用于设置参考系是水平还是垂直的,percent参数用于使用百分比控制参考系的位置,begin和end参数用于使用精确值控制参考线的位置(优先级:percent > begin > end,即设置percent时,begin不会生效)

<android.support.constraint.ConstraintLayout 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"
    tools:context=".surface.impl.message.ActivityMessage">

    <ImageView
        android:id="@+id/uaActReturn"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:src="@mipmap/global_ic_return"
        android:tint="#3388FF"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="个人消息"
        android:textColor="#000000"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="@id/uaActReturn"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@id/uaActReturn" />

    <View
        android:id="@+id/uiBarDivider"
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:background="#E3E4E6"
        app:layout_constraintTop_toBottomOf="@id/uaActReturn" />

    <android.support.constraint.Guideline
        android:id="@+id/umVertical333"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.33" />

    <android.support.constraint.Guideline
        android:id="@+id/umVertical666"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.66" />

    <TextView
        android:id="@+id/uiTabPolice"
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:gravity="center"
        android:text="普通"
        android:textSize="12sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/umVertical333"
        app:layout_constraintTop_toBottomOf="@id/uiBarDivider" />

    <TextView
        android:id="@+id/uiTabMaintain"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:gravity="center"
        android:text="紧急"
        android:textSize="12sp"
        app:layout_constraintBottom_toBottomOf="@id/uiTabPolice"
        app:layout_constraintLeft_toRightOf="@id/umVertical333"
        app:layout_constraintRight_toLeftOf="@id/umVertical666"
        app:layout_constraintTop_toTopOf="@id/uiTabPolice" />

    <TextView
        android:id="@+id/uiTabInstall"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:gravity="center"
        android:text="其他"
        android:textSize="12sp"
        app:layout_constraintBottom_toBottomOf="@id/uiTabPolice"
        app:layout_constraintLeft_toRightOf="@id/umVertical666"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@id/uiTabPolice" />

</android.support.constraint.ConstraintLayout>

原文地址:https://www.cnblogs.com/nicojerry/p/10870759.html

时间: 2024-10-08 23:50:54

【安卓基础】使用Guideline与约束辅助布局的平分空间设计的相关文章

安卓基础01

安卓基础01 SDK System images 这是在创建模拟器时需要的system image,也就是在创建模拟器时CPU/ABI项需要选择的,下载并解压后,将解压出的整个文件夹复制或者移动到 your sdk 路径/system-images文件夹下即可, 如果没有 system-images目录就先 创建此文件夹,然后打开SDK Manager,打开Tools(工 具)菜单选择Options(选项)菜单项打开Android SDK Manager Setting对话框,点击Clear C

回顾安卓基础

以前老张教c的时候说过:学的越多,总结的越少,就越好. 开始的时候不能理解,现在终于慢慢悟出了. 准备慢慢总结一下经常用到的安卓基础,算是重温一下美好记忆吧.个人博客记录个人心得,希望开心自己的同时也能够帮助别人. 从布局开始吧: 总结相对布局: 1.父控件与子控件的关系(alignParentXXX) 2.控件与指定控件的位置关系.(above,below,toRightOf,toLeftOf) 3.控件与指定控件的对其关系(alignTop,alignBottom,alignLeft,ali

安卓基础开发-短信发送器

一个安卓基础开发小案例,短信发送器: 代码演示图: 布局文件: activity_main.xml <span style="font-family:Comic Sans MS;font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

基础篇 - SQL 的约束

基础篇 - SQL 的约束 约束 一.实验简介 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性.本节实验将在实践操作中熟悉 MySQL 中的几种约束. 二.实验内容 1.约束分类 听名字就知道,约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性. 在MySQL中,通常有这几种约束: 约束类型: 主键 默认值 唯一 外键 非空 关键字: PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY NOT NULL 2

安卓基础

1.  Service 服务 (是一个没有用户界面的在后台运行执行耗时操作的应用组件) 第一种方式: (startService 未绑定, 当程序退出,若没有停止服务则会继续在后台运行) //继承 Service public class MyService extends Service { private String tag = "MyService"; @Override public IBinder onBind(Intent intent) { // TODO Auto-g

MySQL基础(三)——约束

MySQL基础(三)--约束 1.约束的使用方法 2.指定约束的时间 3.not null约束 4.unique约束 5.primary key约束 6.foreign key约束 7.check约束

使用 Flash Builder 4 创建基于约束的布局

关于基于约束的布局 基于约束的布局示例 基于约束的布局和绝对定位 使用高级约束布局 设置组件的布局约束 当用户调整应用程序窗口的大小时,可以对组件使用约束来自动调整组件的大小及其在容器中的位置.通常在 MXML 编辑器的设计模式下定义布局约束.还可以在源代码模式下编辑组件的属性来定义布局约束. 关于基于约束的布局 Flex 支持基于约束的布局.基于约束的布局在支持绝对定位的容器中可用.对于 Spark 容器,默认布局 BasicLayout 支持绝对定位.在使用基于约束的布局时,可以将组件的一个

安卓基础之主题/样式

安卓基础之主题/样式 样式:一般作用在控件上,使多个控件拥有相同风格 主题:一般作用清单文件的activity或application结点下 样式Style的使用 系统自动在app/res/values/路径下建立style.xml文件,用来添加,引用Style,因此一般情况下我们在这个文件中定义自己的Style就可以了. 定义好一个style后,我们就可以在定义控件时调用这个Style 如果我们要在界面中定义样式相似的多个组件,我们可以把控件中的相同的属性抽出来,自定义Style,定义控件时引

Atitit.&#160;数据约束&#160;校验&#160;原理理论与&#160;架构设计&#160;理念模式java&#160;php&#160;c#.net&#160;js&#160;javascript&#160;mysql&#160;oracle

Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle 1. 主键1 2. uniq  index2 3. 检查约束 (Check Counstraint) 对该列数据的范围.格式的限制(如:年龄.性别等)2 4. 默认约束 (Default Counstraint) 该数据的默认值2 5. trigger2 6. 外键机制  参照完整性:2 7. 断言约束:不必与特定的列绑定,可以理解为能应用于多个表的