Vintage appMaker의 Tech Blog

[android] code로 view의 weight 조절 본문

Source code or Tip/Android(Java, Kotlin)

[android] code로 view의 weight 조절

VintageappMaker 2021. 7. 22. 00:18

View의 weight를 code로 변경할 수 있다. 단, 바로 위의 부모가 Linearlayout이어야 한다. 


<?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=".PopUpTestActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:text="bottom Popup"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <LinearLayout
        android:id="@+id/lnMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <View
            android:id="@+id/view1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.3"
            android:background="#FF0000" />

        <View
            android:id="@+id/view2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.7"
            android:background="#00FF00" />


    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

[activity_main.xml]

 

의 화면을 Activity에서 변경하고자 한다면 다음과 같이 간단하게 구현가능하다. 

 

...

val v = findViewById<View>(R.id.view1)
(v.layoutParams as LinearLayout.LayoutParams).weight = 0.0f

val v2 = findViewById<View>(R.id.view2)
(v2.layoutParams as LinearLayout.LayoutParams).weight = 1.0f

...

 

그러면 다음과 같은 결과화면을 볼 수 있다. 

 

Comments