일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 계엄령 외신반응
- 윤석열
- 원스휴먼 사료
- 원달러환율
- 비상계엄령
- 원스휴먼 황금양 구하기
- 원스휴먼 황금양털파밍
- 커피추천
- 2차계엄
- 원스휴먼 레시피 파밍
- 레시피 파밍
- 원스휴먼 동물
- 원스휴먼 레시피
- 원스휴먼 쿠폰
- 원스휴먼 먹이
- 일론머스크
- 홈플러스
- 원스휴먼 스타크롬
- 시그니처
- 원스휴먼 황금양
- 원스휴먼 요리
- 믹스커피
- 믹스커피추천
- 1203계엄령
- 계엄령
- 유광버섯 통조림
- 국방부
- 홈플러스 시그니처 모카골드믹스커피
- 2차 비상계엄
- Today
- Total
0101011001010111
안드로이드 : ConstraintLayout의 weight 개념. 정리 본문
이런레이아웃을 구성한다고 쳐보자!
ConstraintLayout으로만!
그럼 고정비율을 주려면,
LinearLayout의 weight와는 좀 다르다.
ConstraintLayout에서는 비율을 나타내는
app:layout_constraintHorizontal_weight 및
app:layout_constraintVertical_weight를 사용하는데,
이를 활용하기 위해서는 다음과 같은 방식으로 작성해야 합니다:
1. 시작점과 종료점을 설정해야 합니다.
예를 들어, 수평 비율을 설정하려면
app:layout_constraintStart_toStartOf 및 app:layout_constraintEnd_toEndOf를 설정해야 합니다.
2. app:layout_constraintWidth_percent 또는 app:layout_constraintHeight_percent를 사용하여 비율을 설정합니다.
예시로,
두 개의 뷰가 있고 첫 번째 뷰가 화면 너비의 30%를 차지하고 두 번째 뷰가 나머지 70%를 차지하게 하려면:
<!-- 첫 번째 뷰 -->
<View
android:id="@+id/view1"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintWidth_percent="0.3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/view2" />
<!-- 두 번째 뷰 -->
<View
android:id="@+id/view2"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintWidth_percent="0.7"
app:layout_constraintStart_toEndOf="@id/view1"
app:layout_constraintEnd_toEndOf="parent" />
해당부분에서의 힌트를 얻어 사용하자.
방향 이름▼
방향이름 한번더 숙지!
힌트를 얻어서 재밋게 하고있는데, 여기서 주의할 점은,
이런 방향 값을 잘 줘야한다!!
맞다 안드로이드 xml에서 주석 표기 방법은
<!-- 내용 -->이다.
단축키는 컨 + /
나머지값을 비율로 주는 방법은
<!-- 첫 번째 뷰, 화면의 30%를 차지 -->
<View
android:id="@+id/view1"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintEnd_toStartOf="@id/view2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_percent="0.3" /> <!-- 두 번째 뷰, 화면의 나머지 70%를 차지 -->
<View
android:id="@+id/view2"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/view1" />
ConstraintLayout에서 남은 공간을 특정 비율로 분할하려면 app:layout_constraintWidth_percent 또는 app:layout_constraintHeight_percent 속성을 사용하되, 다른 제약 조건과 함께 사용하는 것이 핵심입니다.
아래는 ConstraintLayout에서 두 개의 뷰가 있고, 첫 번째 뷰가 화면 너비의 30%를 차지하고, 두 번째 뷰가 나머지 70%를 차지하도록 설정하는 예시입니다:
이 경우, 첫 번째 뷰는 화면 너비의 30%를 차지하도록 설정되었고, 두 번째 뷰는 첫 번째 뷰와 부모의 오른쪽 사이에 위치하므로 나머지 공간인 70%를 자동으로 차지하게 됩니다.
이런 방식으로 여러 뷰와 함께 제약 조건을 사용하여 복잡한 레이아웃도 표현할 수 있습니다.
쟈란~ 뼈대 완성!!
<?xml version="1.0" encoding="utf-8"?>
<!--전체 세로배열 시작-->
<androidx.constraintlayout.widget.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"
tools:context=".MainActivity">
<!-- 전체비율 = 50(이미지) : 15(판매자정보) : 50(판매자글) : 10(가격및 채팅하기) -->
<!-- [50(이미지)]이미지 들어갈 레이아웃, 즉 50/125(0.4) 비율 -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/infoUser"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.4"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!--[15(판매자정보)15/125=0.12]판매자 아이콘, 아이디와 주소, 매너온도 들어갈부분,가로배열(10:25:15)//시작-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/infoUser"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.12"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image">
<!--판매자 아이콘 부분 // 둥근 이미지 비율 10/50(0.2)-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/sellericon"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintEnd_toStartOf="@+id/sellIdAndAdd"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.2" />
<!--아이디, 주소 부분이 들어갈 네모칸 (세로배열1:1) 시작 비율 25/50-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/sellIdAndAdd"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintStart_toEndOf="@+id/sellericon"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.5">
<!--아이디부분-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/sellerId"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/sellerAdd"
app:layout_constraintHeight_percent="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/sellerAdd"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.5" />
<!--아이디, 주소 부분이 들어갈 네모칸 (세로배열1:1) 종료-->
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- 매너온도, 아이콘이들어갈 곳 비율 15/50, 박스 안쪽비율 아이콘 2:1 -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/mannerAndtext"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/sellIdAndAdd"
app:layout_constraintTop_toTopOf="parent">
<!--[2]온도 및 아이콘 표시 (세로) -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/manner"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.7"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!--[1]아래 매너온도라고 텍스트나오는곳 (세로) -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/mannerText"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/manner" />
</androidx.constraintlayout.widget.ConstraintLayout>
<!--판매자 아이콘, 아이디와 주소, 매너온도 들어갈부분,가로배열 //종료 -->
</androidx.constraintlayout.widget.ConstraintLayout>
<!--[50(판매자글)=50/125 = 0.4]판매자 글 -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/seller"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/price"
app:layout_constraintHeight_percent="0.38"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/infoUser">
<!-- 판매자글 스크롤 뷰-->
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- [10(가격및 채팅하기)=10/125 (0.08)]하트, 가격 , 채팅하기버튼 [1:3:2]-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/price"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/seller">
<!--[1]=1/6(하트 아이콘 -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/priceheart"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintWidth_percent="0.16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<!--[3]가격 -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/priceInprice"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintWidth_percent="0.5"
app:layout_constraintStart_toEndOf="@+id/priceheart"
app:layout_constraintTop_toTopOf="parent"/>
<!--[2]채팅하기 버튼 들어갈 공간-->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintStart_toEndOf="@id/priceInprice"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Constraint 안에 ConstraintConstraintConstraintConstraintConstraintConstraint ㅋㅋㅋㅋㅋㅋ
번식잼
비율로 깔끔하게 뼈대를 완성하였다!
그럼 이제 이뿌게 샤샤샥 한개씩 넣어보도록 하자
'Kotlin > [스스로]Kotlin&안드로이드' 카테고리의 다른 글
android.R.layout.simple_list_item_1 (0) | 2023.08.24 |
---|---|
안드로이드 텍스트 여러줄 입력하기 (0) | 2023.08.21 |
Android_Constraint Layout 방향 (0) | 2023.08.15 |
Kotlin - 최소, 최대 값 구하기 min() max() (1) | 2023.08.10 |
Kotlin - return에 대해 알아보자! (0) | 2023.08.09 |