gpt4 book ai didi

java - ConstraintLayout View 大小 - 与父级的比例

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:08 25 4
gpt4 key购买 nike

我正在学习如何使用 ConstraintLayout。我想用 4 个元素制作菜单。

  • 元素应该在父元素中居中

  • 元素的大小应为父元素高度的 1:5(比率 1:1 - 正方形)

我做了这样的事情:

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<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/split"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.6" />

<android.support.constraint.ConstraintLayout
android:id="@+id/tiles_container"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@color/colorPrimary"
app:layout_constraintBottom_toTopOf="@+id/split"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">

<android.support.constraint.Guideline
android:id="@+id/container_v"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5" />

<android.support.constraint.Guideline
android:id="@+id/container_h"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />

<ImageView
android:id="@+id/tile_1"
android:layout_width="@dimen/tile_size"
android:layout_height="@dimen/tile_size"
android:layout_marginBottom="@dimen/tile_margin"
android:layout_marginEnd="@dimen/tile_margin"
app:layout_constraintBottom_toTopOf="@+id/container_v"
app:layout_constraintEnd_toStartOf="@+id/container_h"
app:srcCompat="@mipmap/ic_launcher" />

<ImageView
android:id="@+id/tile_2"
android:layout_width="@dimen/tile_size"
android:layout_height="@dimen/tile_size"
android:layout_marginBottom="@dimen/tile_margin"
android:layout_marginStart="@dimen/tile_margin"
app:layout_constraintBottom_toTopOf="@+id/container_v"
app:layout_constraintStart_toStartOf="@+id/container_h"
app:srcCompat="@mipmap/ic_launcher" />

<ImageView
android:id="@+id/tile_3"
android:layout_width="@dimen/tile_size"
android:layout_height="@dimen/tile_size"
android:layout_marginTop="@dimen/tile_margin"
android:layout_marginEnd="@dimen/tile_margin"
app:layout_constraintEnd_toStartOf="@+id/container_h"
app:layout_constraintTop_toTopOf="@+id/container_v"
app:srcCompat="@mipmap/ic_launcher" />

<ImageView
android:id="@+id/tile_4"
android:layout_width="@dimen/tile_size"
android:layout_height="@dimen/tile_size"
android:layout_marginTop="@dimen/tile_margin"
android:layout_marginStart="@dimen/tile_margin"
app:layout_constraintStart_toStartOf="@+id/container_h"
app:layout_constraintTop_toTopOf="@+id/container_v"
app:srcCompat="@mipmap/ic_launcher" />


</android.support.constraint.ConstraintLayout>


</android.support.constraint.ConstraintLayout>

不幸的是,我不得不对图像的宽度和高度进行硬编码。是否可以根据与父级的比例设置子级的大小(如在 Xcode 中)

最佳答案

你永远不应该将一个 ConstraintLayout 嵌套在另一个 ConstraintLayout 中。您应该始终保持平面布局层次结构。

ConstraintLayout 的“1.1.0-beta3”版本允许使用百分比尺寸和许多更酷的功能。

只需将“layout_constraintHeight_default”属性设置为“percent”(使用百分比单位),然后使用“layout_constraintHeight_percent”设置百分比。 (宽度相关的属性也可用)

这是使用指南的解决方案:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#caf">

<android.support.constraint.Guideline
android:id="@+id/guideline_ver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent=".5" />

<android.support.constraint.Guideline
android:id="@+id/guideline_hor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent=".5" />

<View
android:id="@+id/topLeft"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="4dp"
android:background="#fff"
app:layout_constraintBottom_toTopOf="@+id/guideline_hor"
app:layout_constraintDimensionRatio="h,1:1"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent=".2"
app:layout_constraintRight_toLeftOf="@+id/guideline_ver" />

<View
android:id="@+id/topRight"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="4dp"
android:background="#fff"
app:layout_constraintBottom_toTopOf="@+id/guideline_hor"
app:layout_constraintDimensionRatio="h,1:1"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent=".2"
app:layout_constraintLeft_toRightOf="@+id/guideline_ver" />

<View
android:id="@+id/bottomLeft"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="4dp"
android:background="#fff"
app:layout_constraintDimensionRatio="h,1:1"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent=".2"
app:layout_constraintRight_toLeftOf="@+id/guideline_ver"
app:layout_constraintTop_toBottomOf="@+id/guideline_hor" />

<View
android:id="@+id/bottomRight"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="4dp"
android:background="#fff"
app:layout_constraintDimensionRatio="h,1:1"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent=".2"
app:layout_constraintLeft_toRightOf="@+id/guideline_ver"
app:layout_constraintTop_toBottomOf="@+id/guideline_hor" />

</android.support.constraint.ConstraintLayout>

Layout capture

希望这对您有所帮助!

关于java - ConstraintLayout View 大小 - 与父级的比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47401512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com