일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DataBinding
- Behavior
- kotlin
- 안드로이드
- CollapsingToolbarLayout
- ViewModel
- 알림
- HTTP
- CoordinatorLayout
- recyclerview
- onMeasure
- Navigation
- onLayout
- Android
- hilt
- BOJ
- notification
- 코틀린
- 백준
- CustomView
- View
- Coroutine
- LiveData
- sqlite
- Algorithm
- activity
- lifecycle
- 알고리즘
- room
- AppBarLayout
- Today
- Total
목록삽질 (18)
개발일지
안드로이드에서 Dialog를 Custom해서 만들 때 layout_width와 layout_height를 match_parent로 해도 꽉 차지 않는데 이는 Dialog의 window가 wrap_content이기 때문이다. => window의 크기를 바꾸면 된다. window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) 반드시 setContentView를 호출한 다음 바꿔야한다.
CoordinatorLayout에서 ViewPager를 사용할 경우 이상하게 작동하는 경우가 있다. (ex : ViewPager가 짤린다.) AppBarLayout과 같이 사용시 @string/appbar_scrolling_view_behavior를 behavior로 설정하자. => @string/appbar_scrolling_view_behavior는 Scroll이 가능한 View에 설정해야한다. (NestedScrollView, RecyclerView)
Fragment에서 ViewPagerAdapter를 Fragment 맴버 변수로 선언한 경우 navigation시 오류 발생 => onCreateView에 ViewPagerAdapter를 생성해서 사용하자
StaggeredGridLayoutManager를 이용한 RecyclerView에서 ViewHolder에 Margin을 설정하면 배치가 이상해지는 오류가 발생했다. => gapStrategy를 설정하자 with(binding.recyclerView) { adapter = MovieAdapter() addItemDecoration(GridSpacingItemDecoration(2, 5.toDp())) layoutManager = StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL).apply { gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_NONE } }
SQLite는 간단하고 가볍지만 기능이 제한적이다. 그 예로 ALTER TABLE로 가능한 기능이 RENAME TABLE, RENAME COLUMN, ADD NEW COLUMN밖에 없고 Foreign Key를 추가할 수 없다. => Foreign Key를 추가하는 방법은 새로운 Table을 만들어서 지정하는 법이 있다. Example (Room Migration) private val MIGRATION_1_2 = object : Migration(1, 2) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("CREATE TABLE Drawer(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NUL..
CoordinatorLayout은 View의 Visible상태가 GONE인 것은 생략하기 때문에 FloatingActionButton을 그냥 hide로 숨기면 그 다음부터 상태전달을 생략한다. (hide는 View의 Visible을 GONE으로 만들기 때문) => hide에 재정의한 리스너를 달아주자!! override fun onNestedScroll(coordinatorLayout: CoordinatorLayout, child: FloatingActionButton, target: View, dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int, type: Int, consumed: IntArray) { super.onNeste..
CoordinatorLayout자식뷰들의 상호작용을 도와준다. 보통 자식뷰에 Behaviors를 지정하여 스크롤시 효과를 주기도 한다. ScrollView는 Behaviros를 못주지만 NestedScrollView와 RecyclerView는 줄 수 있다. 만약 CoordinatorLayoutAppbarLayout RecyclerView구조에서 RecyclerView에게 Behaviors를 주지 않는 경우 AppbarLayout에 RecyclerView가 겹쳐서 안보이고 상호작용을 할 수 없다. 해결코드