Kotlin

FrameLayout size/margin 동적변경

kakaroo 2022. 4. 24. 00:50
반응형

 

FrameLayout 의 layout size를 코드상에서 동적으로 변경해야 할 때가 있습니다.

 

 

아래와 같이 FrameLayout 이 TextView 등으로 구성되어 있는데, 해당 값이 비어 있는 경우 layout의 높이를 수정해야 합니다.

<FrameLayout
    android:id="@+id/frame_topic"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp">

    <TextView
        android:id="@+id/tv_topic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="0dp"
        android:layout_marginTop="40dp"
        android:layout_marginLeft="8dp"
        android:layout_gravity="top|left"
        android:paddingTop="4dp"
        android:textSize="18dp"
...      
        android:textStyle="bold"
        android:textColor="#000000" />

아래와 같이 빈 공간이 보여 부자연 스럽게 됩니다.

 

코드 상에서 아래와 같이 수정을 해 줍니다.

하드 코딩된 값은 layout.xml 에 정의된 값을 불러주어 하나의 리소스로 관리해야 합니다.

val width = frameLayout.layoutParams.width
val marginLeft = frameLayout.marginLeft
val marginRight = frameLayout.marginRight
val marginTop = frameLayout.marginTop
val marginBottom = frameLayout.marginBottom
frameLayout.layoutParams = LinearLayout.LayoutParams(width, 128)
(frameLayout.layoutParams as LinearLayout.LayoutParams).setMargins(
    marginLeft, marginTop, marginRight, marginBottom)

 

 

자연스럽게 수정이 되었습니다.

반응형

'Kotlin' 카테고리의 다른 글

생성자 (constructor)  (0) 2022.04.30
생성자 역할을 하는 Factory 함수  (0) 2022.04.30
SubsamplingScaleImageView  (0) 2022.04.23
Animation  (0) 2022.04.18
object, companion object  (0) 2022.04.15