如何使用 android 布局的百分比?
How to use Percentage for android layout?
我们如何为 android 视图元素使用 百分比 值?像这样
<TextView
android:id="@+id/"
android:layout_width="75%"
android:layout_height="50%"/>
Google 有新的 API 称为 android.support.percent
<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>
支持库刚刚添加了百分比布局。
可以这样做
<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
您可以使用 PercentRelativeLayout,
它是最近对 Design Support Library 的未记录的补充,不仅能够指定元素之间的相对关系,而且能够指定可用元素的总百分比 space.
结构是
<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 以支持在您的应用中添加和管理基于百分比的维度。
要使用,您需要将此库添加到 your Gradle dependency
列表:
dependencies {
compile 'com.android.support:percent:22.2.0'
// or compile 'com.android.support:percent:23.1.0'
}
为了演示目的,您可以访问 Git android-percent-support-lib-sample。
您可以使用 PercentRelativeLayout
它是 RelativeLayout
的子类,支持基于百分比的尺寸和边距。
要使用,您需要将此库添加到您的 Gradle dependency
:
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>
2018 年更新:
PercentRelativeLayout
和 PercentFrameLayout
已弃用。考虑使用 ConstraintLayout
旧答案:
到目前为止 Android 支持库限制了它的使用位置:
和RelativeLayout
android.support.percent.PercentRelativeLayout
和FrameLayout
android.support.percent.PercentFrameLayout
如何使用?
嗯,首先确保包含依赖项
build.grade(Module: app)
在您的 android 应用中。
dependencies {
compile 'com.android.support:percent:23.3.0'
}
然后导航到本例中的 xml 布局 (.MainActivity)
<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>
更多详情请查看here:
由于 PercentFrameLayout
和 PercentRelativeLayout
在 26.0.0 中被弃用,您需要使用 ConstraintLayout
来使用百分比值调整 TextView 的大小。
ConstraintLayout
是为 Android 平台构建响应式 UI 的强大工具,您可以在此处找到更多详细信息 Build a Responsive UI with ConstraintLayout.
下面是如何使用 ConstraintLayout 调整 TextView(w=75%, h=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 视图元素使用 百分比 值?像这样
<TextView
android:id="@+id/"
android:layout_width="75%"
android:layout_height="50%"/>
Google 有新的 API 称为 android.support.percent
<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>
支持库刚刚添加了百分比布局。
可以这样做
<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
您可以使用 PercentRelativeLayout, 它是最近对 Design Support Library 的未记录的补充,不仅能够指定元素之间的相对关系,而且能够指定可用元素的总百分比 space.
结构是
<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 以支持在您的应用中添加和管理基于百分比的维度。
要使用,您需要将此库添加到 your Gradle dependency
列表:
dependencies {
compile 'com.android.support:percent:22.2.0'
// or compile 'com.android.support:percent:23.1.0'
}
为了演示目的,您可以访问 Git android-percent-support-lib-sample。
您可以使用 PercentRelativeLayout
它是 RelativeLayout
的子类,支持基于百分比的尺寸和边距。
要使用,您需要将此库添加到您的 Gradle dependency
:
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>
2018 年更新:
PercentRelativeLayout
和 PercentFrameLayout
已弃用。考虑使用 ConstraintLayout
旧答案:
到目前为止 Android 支持库限制了它的使用位置:
和
RelativeLayout
android.support.percent.PercentRelativeLayout
和
FrameLayout
android.support.percent.PercentFrameLayout
如何使用?
嗯,首先确保包含依赖项
build.grade(Module: app)
在您的 android 应用中。
dependencies {
compile 'com.android.support:percent:23.3.0'
}
然后导航到本例中的 xml 布局 (.MainActivity)
<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>
更多详情请查看here:
由于 PercentFrameLayout
和 PercentRelativeLayout
在 26.0.0 中被弃用,您需要使用 ConstraintLayout
来使用百分比值调整 TextView 的大小。
ConstraintLayout
是为 Android 平台构建响应式 UI 的强大工具,您可以在此处找到更多详细信息 Build a Responsive UI with ConstraintLayout.
下面是如何使用 ConstraintLayout 调整 TextView(w=75%, h=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%: