[英]Custom Dialog Alert
我正在嘗試制作一個自定義對話框警報,如圖所示; 我試着到處尋找,讓它看起來像照片,但似乎沒有任何效果。 任何幫助,將不勝感激; 第一張圖片顯示了我想要制作的東西,第二張圖片顯示了它目前的樣子:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val alert = AlertDialog.Builder(this@MainActivity)
alert.setTitle("Confirm delete")
alert.setMessage("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.")
alert.setPositiveButton("DELETE"){dialog, which ->
Toast.makeText(applicationContext,"Ok, we change the app background.",Toast.LENGTH_SHORT).show()
}
alert.setNegativeButton("CANCEL"){dialog,which ->
Toast.makeText(applicationContext,"You are not agree.",Toast.LENGTH_SHORT).show()
}
val dialog: AlertDialog = alert.create()
dialog.show()
}
}
Alert.Dialog 主題取決於您的設備 API 級別。 在第一張圖片中看起來像Android KitKat (API 19 - 20) ,在第二張圖片中遵循材料設計模式 (API >20) 。
如果想像第一張圖片那樣進行對話,您可能需要進行自定義布局
快樂編碼
1.為Dialog創建Kotlin類
class CustomDialog(
context: Context,val mCallBack: CallBack
) : Dialog(context, R.style.full_screen_dialog) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.dialog_custom)
// YOUR COMPONENT HANDLE HERE
// FOR EXAMPLE
btn_yes.setOnClickListener {
mCallBack.onDone()
dismiss()
}
btn_cancel.setOnClickListener {
dismiss()
}
}
interface CallBack {
//YOU CAN HANDLE THIS METHOD IN YOUR CALLING ACTIVITY
fun onDone(rating: Float, comments: String)
}
}
2.如何調用
var mDialog: CustomDialog = CustomDialog(
this,
object : CustomDialog.CallBack {
override fun onDone() {
}
})
mDialog.show()
3.樣式.xml
<style name="full_screen_dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="colorAccent">@color/transparent</item>
</style>
創建您自己的自定義布局文件並將其設置在setContentView(R.layout.dialog_custom)
上,因為我在這里沒有提到
這是因為您的對話框正在使用材料主題顯示。 您可以使用以下代碼通過將樣式應用於 AlertDialog 來獲得所需的結果。
val alert = AlertDialog.Builder(this@MainActivity,AlertDialog.THEME_HOLO_LIGHT)
注意:此樣式已棄用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.