일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 소프시스
- 목적 중심 리더십
- 목적중심리더십
- 지지않는다는말
- 캐치마인드
- 자취필수템
- 베드테이블
- 베드트레이
- 면접
- 함수형 프로그래밍
- 재택근무
- 커스텀린트
- 소프시스 밤부 좌식 엑슬 테이블
- 테트리스
- 한달독서
- 프래그먼트
- 좌식테이블
- 아비투스
- 끝말잇기
- 안드로이드
- 브런치작가되기
- 슬기로운 온라인 게임
- 어떻게 나답게 살 것인가
- 1일1커밋
- 한달어스
- T자형인재
- 한단어의힘
- 북한살둘레길
- 리얼하다
- 한달브런치북만들기
- Today
- Total
정상에서 IT를 외치다
[Android, BottomSheet] 안드로이드 버텀 시트 사용 본문
안녕하세요. 블랙진입니다.
이번 시간에는 안드로이드에서 많이 사용하는 머티리얼 디자인 중 하나인 bottom sheets 에 대해서 알아보겠습니다.
구성
bottom sheets는 다음과 같은 3가지로 구성되어 있습니다.
1. Standard bottom sheets
화면 하단에 보여주는 bottom sheets 입니다.
2. Modal bottom sheets
다이얼로그 형태의 bottom sheets로 아래와 같이 화면 하단에 다이얼로그 형태로 보여줍니다.
3. Expanding bottom sheets
Standard bottom sheets 에서 더 나아가 일부 뷰를 미리 보여주며 스크롤을 통해 뷰를 확장할 수 있습니다.
구현
먼저 material 라이브러리를 build.gradle에 추가해 줍니다. material 최신 버전은 릴리즈 노트를 확인해 주세요.
implementation 'com.google.android.material:material:1.2.0-alpha02'
Modal bottom sheets
다이얼로그 bottom sheets는 일반 다이얼로그와 프래그먼트 다이얼로그 두가지 형태로 구현가능합니다.
1. 다이얼로그 구현
먼저 사용할 xml을 구현해줍니다. 저는 bottom_sheet.xml 이름으로 아래와 같이 xml을 구현했습니다.
사용할 View에서 다이얼로그 구현 방법과 동일하게 작성해 줍니다.
val dialogView = layoutInflater.inflate(R.layout.bottom_sheet, null)
val dialog = BottomSheetDialog(this)
dialog.setContentView(dialogView)
dialog.show()
이게 전부입니다 :) BottomSheetDialog 를 만들어서 구현해 주시면 됩니다.
2. 프래그먼트 다이얼로그 구현
프래그먼트롤 생성할 시 Fragment Class를 만들어 줍니다.
class BottomSheetFragment : BottomSheetDialogFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.bottom_sheet, container, false)
}
}
사용할 View 에서 아래와 같은 방법으로 구현해 줍니다.
val bottomSheetFragment = BottomSheetFragment()
bottomSheetFragment.show(supportFragmentManager, bottomSheetFragment.tag)
Expanding bottom sheets
다음은 확장 가능한 bottom sheets 구현법에 대해 보겠습니다.
acitivty_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btnPersistent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<!-- Adding bottom sheet after main content -->
<include layout="@layout/bottom_sheet" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Expanding bottom sheets 기능은 한 화면에서 bottom sheet를 보여줘야 하므로 기존에 만든 bottom_sheet.xml을 include 해줍니다. 여기서 중요한 점은 bottom_sheet.xml을 CoordinatorLayout 안에 넣어주어야 합니다. 또한 다음 세가지 코드를 bottom_sheet.xml에 추가해 줍니다.
app:behavior_hideable="false"
bottom sheets를 화면에 안보일때 까지 내릴지 여부 입니다.
app:behavior_peekHeight="100dp"
미리 보여지는 bottom sheets의 높이를 정합니다.
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
위 behavior를 넣어 주어야만 정상적으로 동작합니다.
그럼 bottom_sheet.xml 을 최종적으로 아래와 같은 코드가 됩니다.
MainAcitivty에 코드는 버튼을 눌렀을 때 bottom sheets를 컨트롤 할 수 있게 하는 기능으로 bottom sheets구현에 꼭 필요한 요소는 아닙니다. 버튼 기능을 구현하고 싶으신 분은 아래 코드를 봐주시면 됩니다.
MainActivity.class
<참고 사이트>
'안드로이드' 카테고리의 다른 글
카메라 예제와 함께 보는 Scoped Storage (이미지 가져오기) (0) | 2020.01.13 |
---|---|
[Android] Customing BottomNavView (0) | 2019.11.27 |
카메라 예제와 함께 보는 Scoped Storage (저장소의 종류) (6) | 2019.11.15 |
카메라 예제와 함께 보는 Scoped Storage (권한 가져오기) (0) | 2019.11.15 |
안드로이드 Q 주요 이슈 사항 간략 정리 (0) | 2019.11.15 |