Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- MVVM
- 스튜디오
- Retrofit
- 안드로이드 스튜디오
- image
- coroutine
- 코루틴
- dart
- 안드로이드
- 안스
- viewpager
- 안드로이드스튜디오
- 유튜브
- WebView
- 레트로핏
- GIT
- 깃헙
- 웹뷰
- studio
- Kotlin
- build
- ADB
- error
- Android
- Gradle
- RecyclerView
- Github
- 의존성주입
- 코틀린
- 에러
Archives
- Today
- Total
코딩하는 일용직 노동자
ViewPager 의 높이를 wrap_content로 표시하는 방법 본문
공지사항을 표시할 팝업을 만들려고 합니다.
Dialog 안에는 뷰페이저가 있고 아이템으로는 ImageView 하나만 있는 Fragment 를 갖고 있습니다.
ImageView의 height를 wrap_content로 설정하고 adjustBoundView = true로 설정했습니다.
하지만 뷰페이저의 height를 wrap_content로 설정을 해도 실제 구동시 match_parent로 표시되는 문제가 있습니다.
이를 해결하려면 ViewPager를 상속받은 CustomViewPager를 만들어서 onMeasure를 오버라이딩 해줘야 합니다.
/**
* 설명 : 일반적인 ViewPager 는 height 값이 화면 전체를 갖는다.
* wrap_content 만큼만 갖게 하기 위해 onMeasure 를 오버라이드 해줘야한다.
*
*
* LeeWW..2020.05.12.
*/
class MeasuredViewPager : ViewPager {
constructor(context: Context?) : super(context!!) {}
constructor(context: Context?, attrs: AttributeSet?) : super(context!!, attrs) {}
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
var heightMeasureSpec = heightMeasureSpec
val mode = MeasureSpec.getMode(heightMeasureSpec)
if (mode == MeasureSpec.UNSPECIFIED || mode == MeasureSpec.AT_MOST) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
var height = 0
for (i in 0 until childCount) {
val child: View = getChildAt(i)
child.measure(
widthMeasureSpec,
MeasureSpec.makeMeasureSpec(
0,
MeasureSpec.UNSPECIFIED
)
)
val h: Int = child.getMeasuredHeight()
if (h > height) height = h
}
heightMeasureSpec = MeasureSpec.makeMeasureSpec(
height,
MeasureSpec.EXACTLY
)
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
}
}
'안드로이드' 카테고리의 다른 글
All children of ConstraintLayout must have ids to use ConstraintSet 에러 (0) | 2020.05.22 |
---|---|
코틀린 콜렉션 함수 정리 (0) | 2020.05.22 |
ViewModelProvider 에러 수정 (0) | 2020.05.12 |
View Background를 Rounded corner 형태로 만들기 (0) | 2020.05.12 |
유튜브를 웹뷰로 구성하기 (2) (4) | 2020.05.11 |