728x90
ConstrainedWidth, constraintHorizontal_bias 속성 활용
왼쪽에 가변적인 뷰가 있고, 오른쪽에 고정 뷰가 있는 아래와 같은 뷰를 구성하고자 했다.
Constraint 속성 구성을 이렇게 구성해봤다.
- 가변뷰
- startToStartOf : parent
- endToStartOf : 고정뷰
- width : wrap_parent
- ellipsize : end
- 고정뷰
- startToEndOf : 가변뷰
- endToEndOf : parent
- width : 50dp
결과는 아래와 같이 되구려..
이유는 startToStartOf 와 endToEndOf 의 속성의 우선순위가 같기 때문! 그래서 레벨이 같다면, 왼쪽에 있는 옵션이 우선 되는 것.
그렇다면, 왼쪽에 있는 가변뷰에 "나는 가변형이야! " 라고 우선순위를 정하는 옵션이 필요하다.
필요한 옵션들
- constrainedWidth : width가 가변형인지 선택 옵션
- constraintHorizontal_bias : 왼쪽에서 얼마나 떨어져있는가에 대한 옵션
- constraintHorizontal_chainStyle : 관계 설정된 뷰를 어떻게 정렬할건가 정하는 옵션
<적용 코드>
<TextView
android:id="@+id/tv_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="가변텍스트"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/tv_right"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tv_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintHorizontal_bias="0"
android:maxLines="1"
android:text=" 고정텍스트"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_left"
app:layout_constraintTop_toTopOf="parent" />
이제 잘 된다. 뿅!
!주의사항
ConstraintLayout 옵션중에 layout_constraintWidth, layout_constrainedWidth 2가지가 있다.
가변형 true/false 옵션 설정하는 것은 layout_constrainedWidth 임을 주의하자.
(constraint 아니고 constrained ! )
'android' 카테고리의 다른 글
view ratio 강제 적용하기 (0) | 2023.04.18 |
---|---|
나는 제대로된 Clean Architecture를 사용하고 있을까? (0) | 2023.04.14 |
Compose 나도 시작해보려합니다✌️ (0) | 2022.03.30 |
스레드간 데이터 통신 (0) | 2021.02.16 |
android fullscreen transparent status bar (1) | 2021.01.22 |