今天有时间捣鼓了一下这个东西,和大家分享一下。
官方提供的包里,关于百分比布局有两个,如下:
就是PercentFrameLayout 和PercentRelativeLayout ,我们今天就来说说这两个百分比布局的使用吧。
1.添加依赖库
本文Demo 使用Android Studio 来完成,所以直接在Gradle 文件中添加下面一行即可。
compile 'com.android.support:percent:23.1.0'
2.在布局文件中使用
<android.support.percent.PercentRelativeLayout
xmlns:android="schemas.android/apk/res/android"
xmlns:app="schemas.android/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/top_left"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignParentTop="true"
android:background="#ff44aacc"
app:layout_heightPercent="20%"
app:layout_widthPercent="70%" />
<View
android:id="@+id/top_right"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/top_left"
android:background="#ffe40000"
app:layout_heightPercent="20%"
app:layout_widthPercent="30%" />
<View
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_below="@+id/top_left"
android:background="#ff00ff22"
app:layout_heightPercent="80%" />
</android.support.percent.PercentRelativeLayout> 首先,使用百分比布局我们的根布局就得是百分比布局android.support.percent.PercentRelativeLayout ,我们在布局中添加了三个View ,每个View 显示不同的颜。在使用百分比布局的时候,layout_width 和layout_height 属性的值不会起作用。我们通过使用
app :layout_heightPercent="20%"和 app :layout_widthPercent="70%"两个属性来设置控件的大小。
上面的代码中一共有三个View ,第一个View 的宽为屏幕宽度的70%,高为屏幕高度的20%,第二个View 位于第一个View 的右边,它的宽度为屏幕宽度的30%
,高为屏幕高度的20%
,第三个View 依次类推,那么它的效果图如下:
是不是很简单呢?在百分比布局中,除了宽高我们可以用百分数来表示之外,margin 我们也可以用百分比来表示,比如下面几个属性: app:layout_marginStartPercent
app:layout_marginEndPercent
app:layout_marginTopPercent
app:layout_marginBottomPercent
我们可以将View 的margin 属性设置为百分数。除了这几个属性可以设置为百分数之外,还有一个值得关注的属性,叫做layout_aspectRatio ,这个叫做屏幕的宽高比,我们看下面一个布局文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentRelativeLayout
xmlns:android="schemas.android/apk/res/android"
xmlns:app="schemas.android/apk/res-auto"
android:background="#ff00ff22"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- not using aspectRatio here -->
<View
android:id="@+id/view1"
android:background="#ff44aacc"
android:layout_width="100dp"
android:layout_height="200dp"/>
<!-- using aspectRatio here -->
<View
android:layout_below="@id/view1"
android:background="#ffe40000"
android:layout_width="100dp"
android:layout_toRightOf="@id/view1"
android:layout_alignParentTop="true"
android:layout_height="0dp"
app:layout_aspectRatio="100%"/>
</android.support.percent.PercentRelativeLayout> 再看看效果图:
第一个View 我们将其宽设置为100dp ,高设置为200dp ,第二个View 我们将其宽设置为100dp ,但是高设置为0dp ,同时给它设置了
layout_aspectRatio 属性,这个属性的值为100%,表示View 的宽高比为1:1,所以就看到上面的效果,
如果我们将之设置为50%,表示宽高比为0.5:1,那么我们看到的效果将是这样的:
好了,最后我们再来看一个
PercentFrameLayout 布局的Demo :
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentFrameLayout xmlns:android="schemas.android/apk/res/android" xmlns:app="schemas.android/apk/res-auto"
android:id="@+id/frame_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">android layout布局
<ImageView
android:id="@+id/child1"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_heightPercent="100%"
app:layout_widthPercent="100%"
android:contentDescription="Image"
android:src="@drawable/Image052" />
<TextView
android:id="@+id/child2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Child 2"
android:textSize="24sp"
android:layout_gravity="top|left" />
<TextView
android:textSize="24sp"
android:id="@+id/child3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Child 3"
android:layout_gravity="top|right" />
</android.support.percent.PercentFrameLayout> 效果图如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论