情境
DialogFragment 很適合拿來呈現一個滿版獨立頁面,如果你想要做出一個小型的對話框,那麼就可以透過 AlertDialog 來顯示,如果你想要使用進度條顯示,就可以透過 ProgressDialog 來處理,不過 ProgressDialog
目前被官方棄用,因此,可以透過 ProgressBar 做在 DialogFragment 來達成這個目的。
在DialogFragment 官網宣布棄用 android.app.DialogFragment
這個類別,建議我們使用 Support Library 的 DialogFragment。
完整程式碼
如果需要完整的程式碼,可以到 GitHub 上觀看或者下載。
程式碼說明
我們的畫面只有一個按鈕,但按下按鈕則觸發開啟 DialogFragment 的事件。
show_dialog.setOnClickListener {
supportFragmentManager.let {
BasicDialogFragment().show(it, "")
}
}
接著來看一下我們的 DialogFragment 怎麼處理的?
class BasicDialogFragment : DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return LayoutInflater.from(context).inflate(R.layout.dialog_content, container, false)
}
}
只需要將相對應的 view 設定給 onCreateView 就可以顯示出
看一下圖片,怎麼會沒有蓋住所有的畫面?
沒關係我們來設定一下參數,新增一個 onCreate 來設定一下 style 就可以了。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NORMAL, android.R.style.Theme_Light_NoTitleBar_Fullscreen)
}
這樣就可以看到全版面的 DialogFragment 了,這樣就是一個簡單的 DialogFragment 範例。