前言
最近在使用 DialogFragment 中,遇到了设置标题无效的问题
原因
查找相关文档,在API 21以后在style中XML默认是
<item name="android:windowNoTitle">true</item>
解决
解决步骤一
在使用 DialogFragment 中,重写 onCreateDialog
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.setTitle("dddddd");
return dialog;
}
解决步骤二
在 Theme 中,添加以下标签
<item name="android:dialogTheme"></item>
不推荐方式
使用 @android:style/Theme.Holo.Light.Dialog
<style name="Theme.Canteen" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- 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="21">?attr/colorPrimaryVariant</item>
<item name="android:dialogTheme">@android:style/Theme.Holo.Light.Dialog</item>
<!-- Customize your theme here. -->
</style>
效果
推荐方式
<item name="android:dialogTheme">@style/BetterDialogFragment</item>
<style name="BetterDialogFragment" parent="Theme.MaterialComponents.DayNight.Dialog">
<!--设置圆角-->
<item name="dialogCornerRadius">8dp</item>
<item name="android:windowNoTitle">false</item>
</style>