Percent库的设计目标是支持基于百分比的View大小设置。
目前,Percent库仅支持在定制的ViewGroup中设置子View的大小为ViewGroup大小的一个百分比。 此外,子View的宽高也可以设定为一个比例关系。
文章更新历史:
-
2015/11/27 文章发布
直接修改build.gradle配置文件,添加该库的引用。例如:
dependencies { compile 'com.android.support:percent:23.1.1' }
也可以通过Android Studio的Project Structure (File → Project Structure,Dependencies)添加引用。
先看一段示例代码:
<?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">
<TextView
android:id="@+id/hello"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#33cc33"
app:layout_heightPercent="30%"
android:text="Hello World!" />
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_heightPercent="70%"
android:layout_gravity="bottom">
<ImageView
android:id="@+id/camera1"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#ee3333"
app:layout_widthPercent="10%"
app:layout_aspectRatio="100%"
android:src="@drawable/ic_menu_camera" />
<ImageView
android:id="@+id/camera2"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#ee3333"
android:layout_toRightOf="@id/camera1"
android:layout_toEndOf="@id/camera1"
app:layout_widthPercent="10%"
app:layout_aspectRatio="50%"
android:src="@drawable/ic_menu_camera" />
<ImageView
android:id="@+id/camera3"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#ee3333"
android:layout_toRightOf="@id/camera2"
android:layout_toEndOf="@id/camera2"
app:layout_widthPercent="10%"
app:layout_aspectRatio="200%"
android:src="@drawable/ic_menu_camera" />
<ImageView
android:id="@+id/camera4"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#ee3333"
android:layout_toRightOf="@id/camera3"
android:layout_toEndOf="@id/camera3"
app:layout_widthPercent="20%"
app:layout_aspectRatio="100%"
android:src="@drawable/ic_menu_camera" />
<ImageView
android:id="@+id/camera5"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#ee3333"
android:layout_toRightOf="@id/camera4"
android:layout_toEndOf="@id/camera4"
app:layout_widthPercent="30%"
app:layout_heightPercent="50%"
android:src="@drawable/ic_menu_camera" />
</android.support.percent.PercentRelativeLayout>
</android.support.percent.PercentFrameLayout>
运行截图如下:
分别基于FrameLayout和RelativeLayout的Percent版本,支持子View设置width、height 和margin的百分比大小,也支持子View的长宽比设置。
如果设置了width和height的百分比大小,还可以设置“android:layout_width”和 “android:layout_height”的属性值为“wrap_content”。 此时,如果按百分比大小计算出来的子View大小不能够容纳子View的内容, 那么此时子View会放弃百分比大小,而采用“wrap_content”大小。