🌊

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

に公開

Abstract

  • AndroidでBottomSheetFragmentの実装のサンプル
  • その説明

概要

BottomSheetFragmentカッコいい。
ちょっとした変化球というか、ちょっと画面遷移に変化が欲しいって思ってたら、こんなFragmentを見つけた。実装もすごい簡単というか理解しやすかった。
という事でソースコードはgithubに公開しました。
https://github.com/aaaa1597/AndKot-BottomSheetFragmentSample.git

使い方

上記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