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
)
}
\確かな知識を身に着けたい、Androidアプリ開発を学びたい人にオススメ!/