Support library 支持使用 % 在 RelativeLayout 和FrameLayout

虽然Android提供了很多中布局方式,但是我们经常用的就三个: LinearLayout, RelativeLayoutFrameLayout

但是在使用RelativeLayoutFrameLayout的时候又会存在这样的问题。当我们需要指定子布局占父布局的百分比时,只有两种方式:

  • 在里面添加LinearLayout使用 layout_weight
  • java代码中重写 onMeasure等。

例如:当我需要指定左边距为父布局的 5%,宽度为父布局的 25%


 
    
 
        
 
        
 
    
 

此时你会发现布局文件变的复杂了好多,也是增加布局的绘制时间。

现在这个已经不是个问题了,在最新发布的Support Library增加在RelativeLayoutFrameLayout的%属性。

Percent Support Library

首先你需要升级你的支持库到 23,因为是在这个版本发布的,然后添加依赖在你的build.gradle文件中:

com.android.support:percent:23.0.0'

使用 android.support.percent.PercentRelativeLayoutandroid.support.percent.PercentFrameLayout分别替代掉 RelativeLayoutFrameLayout。现在有 9个属性可以使用

  • layout_widthPercent : 宽度的百分比 ,例如:app:layout_widthPercent="25%"
  • layout_heightPercent : 高度的百分比
  • layout_marginPercent : 边距的百分比

还其他一些layout_marginLeftPercent, layout_marginRightPercent, layout_marginTopPercent, layout_marginBottomPercent, layout_marginStartPercent, layout_marginEndPercent

现在我们重写一下上面的例子:


 
    
 

两个结果对比:

Support library 支持使用 % 在 RelativeLayout 和FrameLayout_第1张图片

Support library 支持使用 % 在 RelativeLayout 和FrameLayout_第2张图片

你会发现结果完全一致,但是代码更简洁,没有添加任何填充的布局,会更好的执行。

来源:https://inthecheesefactory.com/blog/know-percent-support-library/en

Note:这个是一篇以前翻译的文章,博客挂了,恢复到这边。

你可能感兴趣的:(Support library 支持使用 % 在 RelativeLayout 和FrameLayout)