iOS의 하프 모달을 Android에서도 구현해 보았다 (Kotlin + BottomSheetBehavior)
첫 기사 때문에, 이르지 않는 점이 많이 있다고 생각합니다만, 누군가의 참고가 된다고 생각하고 있습니다.
대상 독자
개발 환경
원래 BottomSheets는 어떤 녀석? 🤔
이미지는 Google Map이며 주변 명소로 쓰여진 곳이 BottomSheet입니다.
아래에서 당겨서 표시하는 사람입니다.
구현 방법
1. 다음 종속성을 app module gradle 파일에 추가
dependencies {
// MaterialDesign
implementation 'com.google.android.material:material:1.0.0'
}
2. 레이아웃 리소스 파일을 만듭니다.
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
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="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--他のView-->
<!-- 下から引っ張り出すView (BottomSheet) -->
<LinearLayout
android:id="@+id/bottomSheetLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorAccent"
android:orientation="vertical"
app:behavior_hideable="false"
app:behavior_peekHeight="56dp"
app:layout_behavior="@string/bottom_sheet_behavior">
<!-- BottomSheetに表示したいViewを設定する -->
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
포인트는 LinearLayout 로 설정하고 있는 app:layout_behavior 입니다.
app:layout_behavior 에 @string/bottom_sheet_behavior 를 설정하여 설정한 View 를 BottomSheet 로 할 수 있습니다.
주의점입니다만, BottomSheet 로 하고 싶은 View (이 예로 말하면, LinearLayout )는 CoordinatorLayout 의 바로 아래에 배치하지 않으면 에러가 되므로 주의해 주세요.
그 외에 설정하고 있는 app:behavior_xxx 의 설정입니다만,
이 기사 에 상세하게 쓰여져 있으므로, 참조해 주시면 좋겠습니다. 🙇♂️
일단, 이번 사용한 설정에 관해서 간단히 해설을 하면,
・BottomSheet의 표시 위치를 설정 (app:behavior_peekHeight="56dp")
・BottomSheet를 화면 밖으로 숨기지 않게 하는 설정 (app:behavior_hideable="false")
됩니다.
3.BottomSheet로 하는 View를 코드로 설정
class MainActivity : AppCompatActivity() {
private lateinit var bottomSheetBehavior: BottomSheetBehavior<LinearLayout>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// CoordinatorLayout の 直下に配置している View を渡す
bottomSheetBehavior = BottomSheetBehavior.from(bottomSheetLayout)
}
여기까지 만들면 다음과 같이 할 수 있다고 생각합니다.
👏👏👏👏👏👏👏👏
마지막으로
타이틀에 Kotlin 이라고 넣어 두면서, 전혀 코드 쓰지 않네요. .
다음 번은 BottomSheet 를 끌어내거나 하는 조작에 의한 state 의 변화 이벤트를 취득해 가고 싶습니다.
이번에 작성한 코드는 여기에 있습니다.
위의 리포지토리를 업데이트하면서 기사도 업데이트합니다.
여기까지 봐 주셔서 감사합니다!
Reference
이 문제에 관하여(iOS의 하프 모달을 Android에서도 구현해 보았다 (Kotlin + BottomSheetBehavior)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fumiyakawauso/items/1d0fa27aa508a3e0570a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)