我们如何在Android视图元素中使用百分比值?就像这样
<TextView
android:id="@+id/"
android:layout_width="75%"
android:layout_height="50%"/>
我们如何在Android视图元素中使用百分比值?就像这样
<TextView
android:id="@+id/"
android:layout_width="75%"
android:layout_height="50%"/>
更新 2018:
PercentRelativeLayout
和 PercentFrameLayout
已经被弃用。考虑使用ConstraintLayout
旧回答:
目前 Android Support 库仅限在以下情况下使用:
与 RelativeLayout
一起使用
android.support.percent.PercentRelativeLayout
使用 FrameLayout
android.support.percent.PercentFrameLayout
如何使用它?
首先,请确保在您的Android应用程序的 build.grade (Module: app) 中包含依赖项。
<code>dependencies {
compile 'com.android.support:percent:23.3.0'
}
</code>
然后在这个示例中导航到你的xml布局文件(.MainActivity)
<code><android.support.percent.PercentRelativeLayout
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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:text="Button"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
app:layout_widthPercent="30%"/>
<Button
android:id="@+id/button2"
android:text="Button 2"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/button"
app:layout_widthPercent="60%"/>
<Button
android:id="@+id/button3"
android:text="Button 3"
android:layout_height="wrap_content"
android:layout_below="@+id/button"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
app:layout_widthPercent="90%"/>
</android.support.percent.PercentRelativeLayout>
</code>
更多细节请查看此处:
<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">
<ImageView
app:layout_widthPercent="50%"
app:layout_heightPercent="50%"
app:layout_marginTopPercent="25%"
app:layout_marginLeftPercent="25%"/>
</android.support.percent.PercentFrameLayout>
https://developer.android.com/reference/android/support/percent/PercentFrameLayout.html
结构为
<android.support.percent.PercentRelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/imageview"
android:layout_gravity="center"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%"
android:src="@mipmap/ic_launcher"
android:background="#cecece"/>
<TextView
android:id="@+id/textview1"
android:layout_below="@id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_marginStartPercent="25%"
app:layout_marginEndPercent="25%"
android:text="PercentRelativeLayout example"
android:background="#bebebe"/>
</android.support.percent.PercentRelativeLayout>
百分比包提供API支持在您的应用程序中添加和管理基于百分比的尺寸。
要使用此功能,您需要将此库添加到 Gradle 依赖项列表
中:
dependencies {
compile 'com.android.support:percent:22.2.0'
// or compile 'com.android.support:percent:23.1.0'
}
为了演示目的,您可以访问Git android-percent-support-lib-sample。
由于26.0.0版本中,PercentFrameLayout
和PercentRelativeLayout
两个控件已被弃用,因此您需要使用ConstraintLayout
来按百分比大小设置您的TextView。
ConstraintLayout
是构建Android平台响应式UI的强大工具,您可以在此处找到更多详细信息 使用ConstraintLayout构建响应式UI。
以下是一个示例,演示如何使用ConstraintLayout调整TextView的大小(宽度为75%,高度为50%):
<android.support.constraint.ConstraintLayout
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">
<android.support.constraint.Guideline
android:id="@+id/ver_guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.75"/>
<android.support.constraint.Guideline
android:id="@+id/hor_guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5"/>
<TextView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="0dp"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
app:layout_constraintBottom_toTopOf="@+id/hor_guideline"
app:layout_constraintEnd_toStartOf="@+id/ver_guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
别忘了将constraint-layout
依赖添加到您的模块build.gradle
文件中。
dependencies {
...
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
...
}
或者直接在布局编辑器中进行编辑,如下所示:
作为结果,您的TextView
宽度是父宽度的75%,高度是父高度的50%:
谷歌推出了一个名为android.support.percent的新API
<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/myTextView"
app:layout_widthPercent="75%"
app:layout_heightPercent="50%"/>
</android.support.percent.PercentFrameLayout>
app:layout_widthPercent="75%" app:layout_heightPercent="50%"
。 - Lewis McGearyPercentRelativeLayout
,它是 RelativeLayout
的一个子类,支持基于百分比的尺寸和边距。Gradle 依赖
中:dependencies {
compile 'com.android.support:percent:23.1.0'
}
样例结构如下:
<android.support.percent.PercentRelativeLayout
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">
<ImageView
app:layout_widthPercent="50%"
app:layout_heightPercent="50%"
app:layout_marginTopPercent="25%"
app:layout_marginLeftPercent="25%"/>
</android.support.percent.PercentRelativeLayout>
LinearLayout
容器来嵌套并通过android:layout_weight
控制两个轴上的百分比。毫无疑问,新的android.support.percent
类更加灵活。我只是想指出经典方法,因为有些人反对使用库。 - CommonsWare