티스토리 뷰

안드로이드

Activity 높이 변경

성현아빠 2022. 9. 26. 13:44

Activity를 코드에서 높이 조절이 필요한 경우가 생겼다.

activity layout의 크기를 결정하는 layout에 id를 설정하고, 

이 id에 layoutParams의 height 값을 변경하여 작업하였다.

 

아래에서는 push_web_view_layout의 높이가 activity의 실제 높이가 되어 이 값으로 높이를 조절하였다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="wrap_content"
    android:orientation="vertical"
    android:layout_marginStart="20dp"
    android:layout_marginEnd="20dp"
    android:layout_gravity="center_vertical|center_horizontal"
    tools:context=".WebViewPopupActivity" >

    <ImageView
        android:id="@+id/btn_popup_close"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_gravity="end"
        android:contentDescription="@null"
        android:background="@drawable/webview_popup_btn_close" />

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="450dp"
        android:id="@+id/push_web_view_layout"
        app:cardCornerRadius="20dp">

        <WebView
            android:id="@+id/push_web_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </androidx.cardview.widget.CardView>

</LinearLayout>

 

push_web_view_layout의 layoutParams의 height 의 값을 원하는 px 값으로 변경하였다.

해상도 문제가 있어 px을 dp로 변환 후 height에 적용 하여 해상도에 영향이 없도록 변경.

        val heightPx = 450
        val layoutParams: ViewGroup.LayoutParams = push_web_view_layout.layoutParams
        val height =
            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, heightPx.toFloat(), resources.displayMetrics)
                .toInt()
        layoutParams.height = height
        if (BuildConfig.DEBUG) Log.d("테스트", "window height change = $height")