DialogFragment内のRecyclerViewでdividerが表示されない

普段RecyclerViewの行間の仕切り線を以下の様なコードで表示している。 (addItemDecoration)

recyclerView.apply {
    this.layoutManager = linearLayoutManager
    this.adapter = adapter
    this.addItemDecoration(
        DividerItemDecoration(context, linearLayoutManager.orientation)
    )
}

ActivityやFragmentの場合はこれでオーケーだが、DialogFragmentやBottomSheetDialogFragment内で利用しているときは表示されない。

ダイアログのテーマでは listDevider という変数が null に設定されていて、Dialog関係はdivierのリソースが無いということ。

参考: Divider is not shown when the RecyclerView is on a Dialog (StackOverflow)

対応方法

上記StackOverflowのコメントとして言及されているが、別のテーマを明示すればいい。

一番簡単なのは AndroidManifest.xml で指定しているアプリのテーマを使うようにすればオーケー。

// テーマを指定して DividerItemDecoration を生成する
val dividerItemDecoration = DividerItemDecoration(
    ContextThemeWrapper(context, R.style.AndroidManifestで指定してるテーマ),
    linearLayoutManager.orientation
)

recyclerView.apply {
    this.layoutManager = linearLayoutManager
    this.adapter = adapter
    this.addItemDecoration(
        dividerItemDecoration
    )
}