728x90
반응형
전체화면의 사이즈를 상황에 따라서 동적으로 사이즈를 조절 하기 위한 예제.
레이아웃 설정
<?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()
}
}
}
동적인 상황을 고려하여 클릭 했을 경우 변경 되도록 처리.
위와 같이 사이즈가 조절 되었음.
참조 해서 잘 사용해보자..기록기록.
728x90
'프로그래밍 > 안드로이드+코틀린' 카테고리의 다른 글
[Android/Service] Service 재시작시 클라이언트 자동 연결 방법 (1) | 2024.10.10 |
---|---|
[Android Studio/안드로이드 스튜디오] AGP에러 임시 해결책. The project is using an incompatible version (AGP 8.6.1) of the Android Gradle plugin. Latest supported version is AGP 8.5.2 (0) | 2024.09.24 |
[Manifest] 매니페스트 메타데이터 읽어 오기 (0) | 2023.10.31 |
[Layout] Corner radius 적용하기 (0) | 2022.11.15 |
[Kotlin] 랜덤 함수 사용하기. (0) | 2022.11.11 |