전체화면의 사이즈를 상황에 따라서 동적으로 사이즈를 조절 하기 위한 예제.
레이아웃 설정
<?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">
<TextView
android:layout_width="0dp"
android:layout_height="0dp"
android:text="Hello World!"
android:background="#ff0022"
android:gravity="center"
android:textColor="@color/cardview_light_background"
app:layout_constraintBottom_toTopOf="@id/guidelineHorizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/guidelineVertical"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/test"
android:text="클릭"
app:layout_constraintEnd_toEndOf="parent"
/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guidelineVertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guidelineHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.7" />
</androidx.constraintlayout.widget.ConstraintLayout>
이렇게 레이아웃만 설정 하면 TextView의 전체 사이즈가 가이드라인을 통해서 조절이 된다.
이런식으로 수평/수직의 퍼센트를 설정함으로 해당 가이드라인을 기준으로 TextView을 그리고 있다.
그럼 상황에 따라서 TextView의 사이즈가 조절되야 하는 경우가 있다.
실제 실무에서도 필요한 기능이므로 그럴 때는 코드단에서 처리를 해줘야 한다.
아래와 같이 해보자.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var btn: Button = findViewById(R.id.test)
btn.setOnClickListener {
changeGuideline(0.5, 0.8)
}
}
private fun changeGuideline(ver:Double, hor:Double) {
val gd1: Guideline = findViewById(R.id.guidelineHorizontal)
val gd2: Guideline = findViewById(R.id.guidelineVertical)
gd1.layoutParams = (gd1.layoutParams as ConstraintLayout.LayoutParams).apply {
guidePercent = ver.toFloat()
}
gd2.layoutParams = (gd2.layoutParams as ConstraintLayout.LayoutParams).apply {
guidePercent = hor.toFloat()
}
}
}
동적인 상황을 고려하여 클릭 했을 경우 변경 되도록 처리.
위와 같이 사이즈가 조절 되었음.
참조 해서 잘 사용해보자..기록기록.
'프로그래밍 > 안드로이드+코틀린' 카테고리의 다른 글
[Manifest] 매니페스트 메타데이터 읽어 오기 (0) | 2023.10.31 |
---|---|
[Layout] Corner radius 적용하기 (0) | 2022.11.15 |
[Kotlin] 랜덤 함수 사용하기. (0) | 2022.11.11 |
PIP 간단한 예제 ( Picture In Picture ) (0) | 2022.11.07 |
Native코드 사용하기 ( c++코드를 사용하기 ) (0) | 2022.11.04 |