Android 由DialogFragment创建的自定义对话框不显示对话框标题
我已经创建了一个自定义错误对话框片段, 显示的对话框能够显示错误消息和按钮。 但是,标题不会显示在对话框上Android 由DialogFragment创建的自定义对话框不显示对话框标题,android,kotlin,android-dialogfragment,Android,Kotlin,Android Dialogfragment,我已经创建了一个自定义错误对话框片段, 显示的对话框能够显示错误消息和按钮。 但是,标题不会显示在对话框上 class ErrorDialog(private val message: String): BaseMvcDialogFragment() { companion object { fun newInstance(message: String): ErrorDialog = ErrorDialog(message) } private la
class ErrorDialog(private val message: String): BaseMvcDialogFragment() {
companion object {
fun newInstance(message: String): ErrorDialog = ErrorDialog(message)
}
private lateinit var errorController : ErrorController
private lateinit var dialogEventBus: DialogEventBus
override fun onCreate(savedInstanceState: Bundle?) {
errorController = compositionRoot.errorController
super.onCreate(savedInstanceState)
dialogEventBus = compositionRoot.dialogEventBus
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val viewMvc = compositionRoot.viewMvcFactory.errorViewMvcImpl(null)
val dialog = Dialog(requireContext())
dialog.setContentView(viewMvc.getRootView())
dialog.setTitle("Oops something went wrong....")
dialog.setCancelable(false)
dialog.setCanceledOnTouchOutside(false)
errorController.bindView(viewMvc, message, dialogEventBus)
return dialog
}
override fun onStart() {
super.onStart()
errorController.onStart()
}
override fun onStop() {
super.onStop()
errorController.onStop()
}
}
主题课
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.WeatherApp" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
</style>
</resources>
@颜色/紫色500
@颜色/紫色\u 700
@颜色/白色
@颜色/青色200
@颜色/青绿色700
@颜色/黑色
?attr/colorPrimaryVariant
我尝试通过添加自定义对话框主题来更改主题
这似乎不起作用结果是,当您使用API大于23的设备时 该行默认为true
<item name="android:windowNoTitle">false</item>
false
为了解决这个问题,我必须对我的主题进行一些更改,如下所示
<style name="Theme.WeatherApp" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:dialogTheme">@style/DialogTheme</item>
</style>
<style name="DialogTheme" parent="@style/Theme.MaterialComponents.Light.Dialog">
<item name="android:windowNoTitle">false</item>
</style>
@风格/对话主题
假的
您还需要确保继承的是相同的父主题也许您应该使用
AlertDialog
而不是Dialog
,或者使用onCreateView()
而不是onCreateDialog()
。我已经尝试过使用onCreateView,这没有什么区别