PercentLayout이 Deprecated로 바뀌었기 때문에 ConstraintLayout으로 비율을 지정합니다

6130 단어 Android
Android SDK26이 나타나면 PercentLayout에서 추천하지 않음의 발표.
예전 기사PercentRelativeLayout의 사용 가능한 노트 등은 사용하기 편하기 때문에 반드시 그것을 찾아 대체해야 한다.

조건은 지난번과 마찬가지로 카드 전체가 화면 너비와span수에 따라 달라진다.
오른쪽 ImageView의 폭은 카드의 절반이며 폭은 고정보다 큽니다.
왼쪽 날짜의 위치는 오른쪽 ImageView의 높이에 따라 카드 아래를 따릅니다.
이런 View 제작은 ConstraintLayout을 활용할 수 있다.
build.gradle에 다음 프로그램 라이브러리를 추가합니다.
build.gradle
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
Constraint Layout은 Support Library의 동반자로 취급되지만 술집에서 사용하는 규칙은 다르다.
https://dl.google.com/dl/android/maven2/com/android/support/constraint/group-index.xml
이번에는 컨스트레이트 라우트를 채널로 지면을 제작했다.
layout.xml
<?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="wrap_content"
    android:background="#fff">

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

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#999"
        app:layout_constraintDimensionRatio="h,8:5"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@id/vertical_center_guideline" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="タイトル"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@id/vertical_center_guideline"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="YYYY年MM月dd日"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintBottom_toBottomOf="@id/image_view"
        app:layout_constraintEnd_toStartOf="@id/vertical_center_guideline"/>

</android.support.constraint.ConstraintLayout>
ConstraintLayout에 대한 축척을 지정하려면 Guideline을 사용합니다.orientation에서는 가이드라인의 구성 방향을 지정하고, layout_constraintGuide_percent에서는 flat를 사용하여 모 레이아웃의 구성 위치를 기준으로 축척을 지정합니다.
ImageView의 폭은 가이드라인의 오른쪽에 설정하고 싶어서 layout_constraintStart_toStartOf에서 가이드라인의 id를 지정하고 layout_constraintEnd_toEndOf에서 parent를 지정합니다.
레이아웃의 크기를 비율로 지정하려면 layout_constraintDimensionRatio를 사용합니다.
ImageView의 너비에 대해 높이를 결정하려면 h,8:5와 같이 높이(h) 또는 너비(w)를 계산하고 幅:高さ의 비율로 기술하십시오.
TextView의 폭은 Guildline의 왼쪽으로 제한되어 있기 때문에 TextView의 layout_constraintEnd_toStartOf 에서 Guideline의 id를 지정합니다.
날짜의 TextView는 ImageView 하단layout_constraintBottom_toBottomOf에 ImageView id를 지정하려고 합니다.
LayoutEditor에서는 다음과 같습니다.

PercentRelativeLayout과 같은 차원의 깊이는 레이아웃 시 치수를 계산하기 때문에 표시할 때 다시 그려지지 않습니다.
Deprecated로 변신한 PercentRelativeLayout을 사용했다면 무조건 ConstraintLayout으로 개작하는 것을 추천합니다.

좋은 웹페이지 즐겨찾기