目的
DialogFragmentでレイアウトを全画面で表示したい。
カスタムダイアログとか作るときに結構使う。
実装
//
open class FullScreenDialogBaseFragment : DialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
dialog?.requestWindowFeature(Window.FEATURE_NO_TITLE)
return super.onCreateView(inflater, container, savedInstanceState)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.setOnTouchListener { _, _ ->
if (isCancelable) dismiss()
true
}
}
override fun onStart() {
super.onStart()
// ダイアログを全画面にする
dialog?.window?.apply {
setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
)
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
}
}
}
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)で全画面にしている。
レイアウト側で背景色を変えたいのでsetBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))で背景色をなくしている。
作って楽しむプログラミング Androidアプリ超入門
はじめてでも大丈夫! アプリを作る楽しさがこの1冊だけで体験できます 本書はプログラミングがまったく初めての人でも、簡単なサンプルを作りながら、Androidアプリの作成を楽しく体験できる入門書です。 全9章を順番に進めることで、Androidアプリの基礎知識、画面のデザイン、コードの書き方などが理解できます。 ...