前面的3中布局,LinearLayout、RelativeLayout、FrameLayout都是从Android1.0中就开始支持了,一直沿用到现在,可以说是满足了绝大多数场景的界面设计需求。不过细心的你会发现,只有LinearLayout支持使用android:layout_weight属性来实现按比例指定控件大小的功能,其他两种布局都不支持比如说,如果想用RelativeLayout来实现两个按钮平分布局宽度的效果,则是比较困难的。

为此,Android引入了一种全新的布局方式来解决此问题-----百分比布局。在这种布局中,我们不再使用wrap_content、match_parent等方式来指定控件的大小,而是允许直接指定控件在布局中所占的百分比,这样的话就可以轻松实现平分布局甚至是任意比例分割布局效果了。

由于LinearLayout本身已经支持按比例指定控件的大小了,因此百分比布局属于新增布局,那么怎么才能做到让新增布局在所有Android版本上都能使用呢?为此,Android团队将百分比布局定义在了suppor库当中,我们只需要在项目的build.gradle中添加百分比布局库的依赖,就能保证百分比布局在Android所有系统版本上的兼容性了。

打开app/build.gradle文件,在dependencies闭包中添加以下内容:

implementation'com.android.support:percent:28.0.0'

点击右上方的Sync Now,然后gradle会开始进行同步,把我们新添加的百分比布局库引入到项目当中。

接下来修改activity_main.xml中的代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/btn1"android:layout_gravity="left|top"android:text="btn1"android:textAllCaps="false"app:layout_heightPercent="50%"app:layout_widthPercent="50%" /><Buttonandroid:id="@+id/btn2"android:layout_gravity="right|top"android:text="btn2"android:textAllCaps="false"app:layout_heightPercent="50%"app:layout_widthPercent="50%" /><Buttonandroid:id="@+id/btn3"android:layout_gravity="left|bottom"android:text="btn3"android:textAllCaps="false"app:layout_heightPercent="50%"app:layout_widthPercent="50%" /><Buttonandroid:id="@+id/btn4"android:layout_gravity="right|bottom"android:text="btn4"android:textAllCaps="false"app:layout_heightPercent="50%"app:layout_widthPercent="50%" /></android.support.percent.PercentFrameLayout>

效果图:

最外层我们使用了PercentFrameLayout,由于百分比布局并不是内置在系统SDK当中的,所以需要把完整的包路径写出来。然后还必须定义一个app的命名空间,这样才能使用百分比布局的自定义属性。

在PercentFrameLayout中我们定义了4个按钮,

使用app:layout_widthPercent属性将各个按钮的宽度指定为布局的50%,

使用app:layout_heightPercent属性将各个按钮的高度指定为布局的50%。

这里之所以可以使用app前缀的属性就是因为刚才定义了app的命名空间,当然我们一直能使用android前缀的属性也是同样的道理。

不过PercentFrameLayout还是会继承FrameLayout的特性,即所有的控件默认都是摆放在布局的左上角。那么,为了让这4个按钮不会重叠,这里还是借助了layout_gravity属性来分别将4个按钮放置在布局的左上,右上,左下,右下4个位置。

PercentFrameLayout(百分比布局)的基本使用相关推荐

  1. android如何看百分比版本,【JAVA】Android百分比布局

    开发我人生第一个app的时候,我在想有没有这么一种布局能适应任何手机的分辨率,今天让我们一起来看看Android 百分比布局PercentRelativeLayout. 使用这种布局首先我们要在gra ...

  2. Android 布局开发之百分比布局、弹性布局

    1.百分比布局 很简单,超级简单.引用之后就可以使用了. compile 'com.android.support:percent:23+' git地址: https://github.com/Jul ...

  3. Android百分比布局初探

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/48802909 标题:Android百分比布局 ...

  4. android百分比扩展枯,Android 增强版百分比布局库 为了适配而扩展

    一 概述 上周一我们发布了Android 百分比布局库(percent-support-lib) 解析与扩展中对percent-support这个库进行了解析和添加了PercentLinearLayo ...

  5. Android 第七课 4种基本布局之FrameLayout和百分比布局

    FrameLayout(帧布局),她没有方便的定位方式,所有的控件都会默认摆放在布局的左上角. 修改activity_main.xml中的代码,如下: <?xml version="1 ...

  6. android百分比布局失效,Android 百分比布局库【原创】

    为了解决android手机适配问题,我们经常想如果可以按照百分比的方式进行界面布局,这样适配各种屏幕就简单多了吧!现在谷歌正式提供百分比布局支持库(android-support-percent-li ...

  7. Android百分比布局支持和垂直TextView

    In this tutorial, we'll discuss and implement Android Percent Layout Support Library. Furthermore, w ...

  8. android 5.0+原生质设计,cardview、Recyclerview、百分比布局PercentRelativeLayout简单使用

    Android 5.0出来已经快一年时间了,全新的系统采用Material Design设计,耳目一新的感觉,当然新系统的出来也增加了新的API为开发带来便捷,现在就说说新出的几个控件,cardvie ...

  9. Android 增强版百分比布局库 为了适配而扩展

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46767825: 本文出自:[张鸿洋的博客] 一 概述 上周一我们发布了Andr ...

最新文章

  1. 《算法竞赛进阶指南》打卡-基本算法-AcWing 95. 费解的开关:位运算、枚举、递推
  2. 用vim看代码的常用指令
  3. ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序
  4. 开发指南专题十一:JEECG微云快速开发平台--基础用户权限
  5. SpringBoot2 整合OAuth2组件,模拟第三方授权访问
  6. B - ACM小组的古怪象棋 【地图型BFS+特殊方向】
  7. 开源包管理器Homebrew被曝 RCE,影响 macOS 和 Linux 系统
  8. linux云服务器,Tomcat服务器常见 The value for the useBean class attribute is invalid 错误
  9. Python一步实现静态图片动态化
  10. Android集成华为、小米、OPPO、VIVO、极光推送
  11. (半)自动批量添加QQ好友
  12. php自动计算增长率,Oracle表空间增长率监控脚本
  13. (rear + maxSize - front) % maxSize 公式的理解(文图详解,手把手)
  14. Unity——RectTransform详解
  15. 淘宝如何打造承载亿级流量的首页?
  16. 更改aspx页面编码格式
  17. 歌曲:最初的梦想 原唱:范玮琪
  18. c语言动态分配输出学生成绩,C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)...
  19. 敏感性、特异度、α、β、阳性预测值(PPV)、阴性预测值(NPV)等指标及置信区间计算(附R语言代码)
  20. frdora10_a8_linux,8楼 【A8】 linux系统的不刻盘的安装 一:.pdf

热门文章

  1. Leetcode PHP题解--D16 922. Sort Array By Parity II
  2. Word2vec 讨论
  3. 自动化部署shell01
  4. Windows下进程间通信及数据共享
  5. 【Android】3.12 兴趣点( POI)搜索功能
  6. Dos命令删除注册表项
  7. KingFly独家爆料!网络赚黑钱,你安心吗?(气愤)
  8. git 查看某个文件的历史记录
  9. 如何创建并运行 java 线程
  10. 构造函数的初始化,初始化列表还是大括号里好,那种效率高