Android Studio 2.2의 미리보기 1을 통해 Google은 지원 라이브러리에 새로운 레이아웃을 출시했습니다 ConstraintLayout
. ConstraintLayout을 사용하면 Android Studio에서 디자인 도구를 사용하는 것이 더 쉽지만 LinearLayout과 같은 상대 크기 (백분율 또는 ‘무게’)를 사용하는 방법을 찾지 못했습니다. 퍼센트를 기준으로 제약 조건을 정의하는 방법이 있습니까? 예를 들어보기에서 화면의 40 %를 차지하고,보기 사이에 20 %의 여백을 만들고,보기의 너비를 다른보기의 너비의 50 %로 설정 하시겠습니까?
답변
현재 몇 가지 방법으로이 작업을 수행 할 수 있습니다.
하나는 지침을 작성하는 것입니다 (디자인 영역을 마우스 오른쪽 버튼으로 클릭 한 후 수직 / 가로 지침 추가 클릭). 그런 다음 가이드 라인의 “헤더”를 클릭하여 위치를 백분율을 기준으로 변경하십시오. 마지막으로 뷰를 지침으로 제한 할 수 있습니다.
다른 방법은 바이어스 (백분율)를 사용하여 뷰를 배치 한 다음 다른 뷰를 해당 뷰에 고정하는 것입니다.
즉, 비율 기반 측정 기준을 제공하는 방법에 대해 생각하고 있습니다. 약속 할 수는 없지만 추가하고 싶은 것입니다.
답변
여기서 빠른 참조를하는 것이 유용 할 수 있습니다.
뷰 배치
다음 과 같은 지침 을 사용하십시오 app:layout_constraintGuide_percent
.
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5"/>
그런 다음이 지침을 다른 뷰의 기준점으로 사용할 수 있습니다.
또는
사용 가능한 공간이 허용 될 때 및 / 또는 바이어스 를 사용 하여 뷰 위치 수정app:layout_constraintHorizontal_bias
app:layout_constraintVertical_bias
<Button
...
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.25"
...
/>
조회수
또 다른 퍼센트 기반 값은 요소의 높이 및 / 또는 너비이며 app:layout_constraintHeight_percent
및 / 또는 app:layout_constraintWidth_percent
:
<Button
...
android:layout_width="0dp"
app:layout_constraintWidth_percent="0.5"
...
/>
답변
“ConstraintLayout1.1.0-beta1″기준으로 퍼센트를 사용하여 너비와 높이를 정의 할 수 있습니다.
android:layout_width="0dp"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent=".4"
너비를 화면 너비의 40 %로 정의합니다. 이 백분율과 지침을 백분율로 조합하면 원하는 백분율 기반 레이아웃을 만들 수 있습니다.
답변
ConstraintLayout v1.1의 새로운 릴리스로 다음을 수행 할 수 있습니다.
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintHeight_percent="0.2"
app:layout_constraintWidth_percent="0.65" />
이렇게하면 버튼이 부모보기 너비의 20 %, 너비의 65 %로 제한됩니다.
답변
지침을 사용하는 방법
채택 된 답변은 지침을 사용하는 방법과 “헤더”가 무엇인지에 대해 조금 불분명합니다.
단계
먼저 가이드 라인을 추가하십시오.
구속 조건을 표시하려면 길드 라인을 선택하거나 조금 움직입니다.
그런 다음 둥근 원 ( “머리글”)이 백분율이 될 때까지 클릭하십시오. 그런 다음이 백분율을 50 % 또는 원하는 값으로 끌어 올 수 있습니다.
그런 다음 뷰를 가이드 라인으로 제한하여 뷰의 부모 비율을 일정 비율로 만들 수 match_constraint
있습니다.
답변
가이드 라인은 매우 귀중합니다. app : layout_constraintGuide_percent는 훌륭한 친구입니다. 그러나 때때로 우리는 가이드 라인없이 백분율을 원합니다. 이제 가중치 를 사용할 수 있습니다 :
android:layout_width="0dp"
app:layout_constraintHorizontal_weight="1"
다음은 추가 가중치 가있는 가이드 라인을 사용하는보다 완전한 예입니다 .
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context="android.itomerbu.layoutdemo.MainActivity">
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.44"/>
<Button
android:id="@+id/btnThird"
android:layout_width="0dp"
app:layout_constraintHorizontal_weight="1"
android:layout_height="wrap_content"
android:text="@string/btnThird"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginBottom="8dp"
app:layout_constraintRight_toLeftOf="@+id/btnTwoThirds"
app:layout_constraintBottom_toTopOf="@+id/guideline"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"/>
<Button
android:id="@+id/btnTwoThirds"
app:layout_constraintHorizontal_weight="2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/btnTwoThirds"
app:layout_constraintBottom_toBottomOf="@+id/btnThird"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toRightOf="@+id/btnThird"/>
</android.support.constraint.ConstraintLayout>
답변
ConstraintLayout v1.1.2를 사용하면 차원 0dp
을 설정 한 다음 layout_constraintWidth_percent
또는 layout_constraintHeight_percent
속성을 0과 1 사이의 값 으로 설정해야합니다 .
<!-- 50% width centered Button -->
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_percent=".5" />
( ConstraintLayout 1.1.2 app:layout_constraintWidth_default="percent"
이상 을 설정할 필요가 없습니다 app:layout_constraintHeight_default="percent"
)