🌊
[Android][kotlin]BottomSheetFragmentのサンプル

Abstract
- AndroidでBottomSheetFragmentの実装のサンプル
- その説明
概要
BottomSheetFragmentカッコいい。
ちょっとした変化球というか、ちょっと画面遷移に変化が欲しいって思ってたら、こんなFragmentを見つけた。実装もすごい簡単というか理解しやすかった。
という事でソースコードはgithubに公開しました。
使い方
上記githubからcloneなりzipダウンロードして、Android Studioで開くだけ。
実装のポイント
というか、そんな特別な処理ってほとんどなくて、ほぼFragmentの実装と同じでいける。
違いはBottomSheetDialogFragmentを継承することぐらい。Androidすごー。
MainActivity.kt
ボタン押下で、BottomSheetFragmentを呼出す。
この処理はDialogFragmentのときと同じ。
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
・
・
・
binding.btnStart.setOnClickListener {
val fragment = SampleBottomSheetFragment()
fragment.show(supportFragmentManager, "SampleBottomSheetFragment")
}
}
}
SampleBottomSheetFragment.kt
通常のFragmentの実装と何も変わらない。onCreateView()でinflateして、onViewCreated()でViewを定義していく。
※_bindingとbindingは、viewBindingのお作法らしい。ChatGPTさんが言ってた。
SampleBottomSheetFragment.kt
class SampleBottomSheetFragment : BottomSheetDialogFragment() {
private var _binding: FragmentSampleBottomSheetBinding? = null
private val binding get() = _binding!!
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {
_binding = FragmentSampleBottomSheetBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.closeButton.setOnClickListener {
dismiss()
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
fragment_sample_bottom_sheet.xml
わざわざ書く必要もないかなと思ったけど、1点だけ。
android:padding="24dp"が地味にコツ。これやらないと、ギチギチに配置されて見苦しくなる。

↑こんな感じ
fragment_sample_bottom_sheet.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp" ←←←←←←←←←←←←←←←← ココ
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".SampleBottomSheetFragment">
・
・
・
</androidx.constraintlayout.widget.ConstraintLayout>
以上、BottomSheetFragmentの説明でした。
お役に立ちますように。。。
Discussion