[Android] GridLayout 아이템을 항상 정사각형으로 만들기
갤러리 앱을 만들고 있는데 그리드뷰의 span count가 바뀔 때마다 뷰의 width가 화면 너비에 따라 자동 조정 되면서 직사각형이 되곤 한다..
이걸 정사각형으로 바꿀 수는 없을까 하루 종일 인터넷을 뒤져보고 마침내 해답을 찾았다.
해답은 layout을 커스텀하여 onMeasure()
메서드의 가로와 세로의 길이를 같도록 바꿔주기만 하면 된다.
import android.content.Context
import android.util.AttributeSet
import android.widget.FrameLayout
class SquareFrameLayout : FrameLayout {
constructor(context: Context?) : super(context!!) {}
constructor(context: Context?, attrs: AttributeSet?) : super(
context!!, attrs
) {
}
constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(
context!!, attrs, defStyle
) {
}
public override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
// 여기가 핵심!
super.onMeasure(widthMeasureSpec, widthMeasureSpec)
}
}
이제 커스터마이징한 레이아웃을 xml파일에 적용시키면 된다.
<?xml version="1.0" encoding="utf-8"?>
<com.example.gallery_dg.util.SquareFrameLayout 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="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/ivPicturePreview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/avatars" />
</com.example.gallery_dg.util.SquareFrameLayout>
다음과 같이 항상 직사각형의 GridView가 잘 나오는 것을 볼 수 있다.
Author And Source
이 문제에 관하여([Android] GridLayout 아이템을 항상 정사각형으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@blucky8649/Android-GridLayout-아이템을-항상-정사각형으로-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)