300x250
반응형

전체화면의 사이즈를 상황에 따라서 동적으로 사이즈를 조절 하기 위한 예제.

 

레이아웃 설정 

<?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

+ Recent posts