안드로이드

안드로이드 ImageView 가로세로 길이 같이 맞추는 법

알통몬_ 2018. 12. 21. 15:36
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


안드로이드에서 Toolbar에 이미지뷰를 넣을 때 항상 고민을 했었습니다.

모든 디바이스에서 비율이 같게 나오게 하려면

android:layout_width="48dp"

android:layout_height="48dp"

처럼 고정값이 아니라 툴바 높이에 맞춰서 이미지 뷰의 height이 결정되고

그 결정된 height에 따라 width 결정되야하는데

어떻게 해여하지?

그러다 선택한 방법은

@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
}

여기서 toolbar의 높이를 구해서 ImageView의 width와 height를 결정해주는

방법이었는데요. 굉장히 비효율적이라는 생각이 문득 들어서

찾아보니 xml에서 간단한게 설정할 수 있었습니다.


먼저 Toolbar의 높이를 

<android.support.v7.widget.Toolbar
android:elevation="4dp"
android:gravity="end"
android:background="@android:color/white"
android:id="@+id/menuBar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
app:contentInsetStart="16dp"
app:contentInsetEnd="0dp">

?android:attr/actionBarSize 로 정해줍니다.

그리고 ImageView의 높이를 match_parent로 줘서 툴바높이와 같게 맞추고

width는 그냥 wrap_content로 줍니다.

그리고 여기서 속성을 하나 더 추가하면 되는데요.

android:adjustViewBounds="true"

바로 위 속성입니다. 위 속성을 추가해주면 이미지뷰에서 알아서

height 와 같게 width 값을 조정합니다.

만약 반대로 width의 길이에 맞게 height를 조정하고 싶다면

android:layout_width="match_parent"

android:layout_height="wrap_content" 를주고

android:adjustViewBounds="true"

를 추가해주면 됩니다.

이상입니다. 감사합니다.


다음 포스팅에서는

Camera2 api 에 대해 포스팅합니다.

반응형