自定义对话框警报
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()
}
}
1.Create Kotlin class for Dialog
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.How 调用
var mDialog: CustomDialog = CustomDialog(
this,
object : CustomDialog.CallBack {
override fun onDone() {
}
})
mDialog.show()
3.styles.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)
,因为我没有在此处提及
这是因为您的对话框使用 material 主题显示。
您可以使用以下代码通过将样式应用于 AlertDialog 来获得所需的结果。
val alert = AlertDialog.Builder(this@MainActivity,AlertDialog.THEME_HOLO_LIGHT)
注意:此样式已弃用。
Alert.Dialog 主题取决于您的设备 API 级别。在第一张图片中看起来像 Android KitKat (API 19 - 20) ,在第二张图片中遵循 material 设计模式(API >20)。
如果想要像第一张图片那样的对话框,您可能需要自定义布局
happy_coding
我正在尝试制作如图所示的自定义对话框提醒;我试着到处找,让它看起来像照片,但似乎没有任何效果。任何帮助,将不胜感激;第一张图是我想做的,第二张是现在的样子:
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()
}
}
1.Create Kotlin class for Dialog
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.How 调用
var mDialog: CustomDialog = CustomDialog(
this,
object : CustomDialog.CallBack {
override fun onDone() {
}
})
mDialog.show()
3.styles.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)
,因为我没有在此处提及
这是因为您的对话框使用 material 主题显示。 您可以使用以下代码通过将样式应用于 AlertDialog 来获得所需的结果。
val alert = AlertDialog.Builder(this@MainActivity,AlertDialog.THEME_HOLO_LIGHT)
注意:此样式已弃用。
Alert.Dialog 主题取决于您的设备 API 级别。在第一张图片中看起来像 Android KitKat (API 19 - 20) ,在第二张图片中遵循 material 设计模式(API >20)。
如果想要像第一张图片那样的对话框,您可能需要自定义布局
happy_coding