제약 조건 레이아웃을 다른 제약 조건 레이아웃에 포함하고 각 제약 조건 간에 제약 조건을 설정하는 방법
constraintLyout v 1.0.1을 사용하고 있습니다.
글로벌 레이아웃(자체가 제약 레이아웃)의 일부에 해당하는 서브 제약 레이아웃을 xml에 포함하고 싶습니다.이 서브 파트를 다른 곳에서 사용하기 위해 레이아웃을 두 xmls로 분할했습니다.
이것을 시도해 보았지만 하위 제약 조건 레이아웃을 상위 항목에 어디에 배치할지 제어할 수 없습니다.나는 모든 것을 같은 xml 파일에 넣어야 하는지 아니면 그것들이 각각의 파일을 사용하는 해결책인지 궁금합니다.
tmp_1.xml
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LABEL1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="16dp"
/>
<TextView
android:id="@+id/label_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LABEL2"
app:layout_constraintStart_toStartOf="@id/label"
app:layout_constraintEnd_toEndOf="@id/label"
app:layout_constraintTop_toBottomOf="@id/label"
android:layout_marginTop="16dp"
/>
<include layout="@layout/tmp_2" />
</android.support.constraint.ConstraintLayout>
tmp_2.xml
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/view_80"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="80th element"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="10dp"
android:layout_marginStart="12dp"
/>
</android.support.constraint.ConstraintLayout>
결과는 이렇습니다.
하지만 나는 이것이 되기를 원합니다.
해봤는데 안 되네요.
<include
app:layout_constraintTop_toBottomOf="@id/label_2"
layout="@layout/tmp_2" />
실제로 해결책을 찾았습니다.Android Studio는 포함 태그의 레이아웃 매개변수를 자동으로 완료하지는 않지만 크기를 포함하는 한 레이아웃 매개변수는 영향을 미칩니다.
<include
layout="@layout/tmp_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/label_2"
/>
하나의 제약 레이아웃을 포함하고 필요에 따라 제약하려면 다음과 같이 포함된 레이아웃에 너비와 높이를 부여해야 합니다.
<include
android:id="@+id/shop_card_layout"
layout="@layout/shop_card_one"
android:layout_height="wrap_content"
android:layout_width="300dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="@id/heading_tv"
app:layout_constraintTop_toBottomOf="@+id/heading_tv" />
당신은 피할 수 있습니다.ConstraintLayout
포함 항목의 제약 조건.그냥 난.<include/>
있는 그대로의
주 활동 레이아웃 파일:
<?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">
<include
android:id="@+id/toolbarLayout"
layout="@layout/layout_toolbar" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="CONTENTS"
app:layout_constraintBottom_toBottomOf="@+id/footerLayout"
app:layout_constraintEnd_toEndOf="@+id/footerLayout"
app:layout_constraintStart_toStartOf="@+id/footerLayout"
app:layout_constraintTop_toTopOf="@+id/footerLayout" />
<include
android:id="@+id/footerLayout"
layout="@layout/layout_footer" />
</android.support.constraint.ConstraintLayout>
툴바 레이아웃 파일:
<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.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<TextView
android:id="@+id/toolbarTitleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/hidden"
android:textColor="@android:color/white"
tools:layout_editor_absoluteX="192dp"
tools:layout_editor_absoluteY="19dp" />
</android.support.v7.widget.Toolbar>
</android.support.constraint.ConstraintLayout>
하나의 제약 조건 레이아웃을 다른 제약 조건 레이아웃에 포함하여 각 제약 조건 레이아웃에 하나의 제약 조건 레이아웃을 더 사용하려면...아래와 같습니다.
<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:background="@drawable/new_landing_bg"
tools:context=".activity.DesignTestActivity">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<include layout="@layout/common_footer_layout" />
</android.support.constraint.ConstraintLayout>
이것은 제 xml 레이아웃에 대한 작업입니다.코드를 즐겨요.
구속조건 레이아웃을 사용하는 경우 레이아웃 태그를 사용할 수 있습니다.선형 레이아웃의 경우 레이아웃을 직접 포함할 수 있습니다.
툴바 아래에 탭뷰가 있는 다른 요구사항이 있었습니다.저는 도구 모음 입면을 0dp로 설정하고 탭 뷰 아래에 보기 파일을 추가하여 탭 뷰와 도구 모음이 하나의 단위로 보이도록 했습니다.
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabs_container"
style="@style/tab_layout_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:tabGravity="fill"
app:tabIndicatorFullWidth="false"
app:tabMode="scrollable"
app:tabSelectedTextColor="@color/text_black_app"
app:tabTextColor="@color/txt_gray_contact_lbl" />
<LinearLayout
android:id="@+id/layout_elevation_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/tabs_container">
<include layout="@layout/gray_view_for_elevation" />
</LinearLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHeight_percent="100"
app:layout_constraintTop_toBottomOf="@+id/layout_elevation_view" />
</androidx.constraintlayout.widget.ConstraintLayout>
이 코드는 선형 레이아웃에 대한 코드입니다.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
android:orientation="vertical">
<com.google.android.material.tabs.TabLayout
style="@style/tab_layout_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="@dimen/dp_4"
app:tabGravity="fill"
app:tabIndicatorFullWidth="false"
app:tabMode="scrollable"/>
<include
android:id="@+id/layout_elevation_view"
layout="@layout/gray_view_for_elevation" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_gray" />
</LinearLayout>
내 입면 뷰 파일
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_1"
android:background="#80bbbbbb" />
<View
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_1"
android:background="#60bbbbbb" />
<View
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_1"
android:background="#50bbbbbb" />
이것이 도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/43676415/how-to-include-constraint-layout-to-another-constraint-layout-and-set-constraint
'source' 카테고리의 다른 글
정의되지 않은 동작은 얼마나 정의되지 않습니까? (0) | 2023.10.28 |
---|---|
역대 상위 5개국에 대한 지난 7일간의 총 합계 집계 (0) | 2023.10.28 |
bootstrap.properties가 spring-cloud-starter-config에서 무시되는 이유는 무엇입니까? (0) | 2023.10.28 |
Python's Pandas의 데이터 프레임에서 Matplotlib 산점도 만들기 (0) | 2023.10.28 |
MySQL 내부 조인 별칭 (0) | 2023.10.28 |