我正在使用API 27进行编译,并在AppCompatActivity上使用以下主题显示Dialog:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
完整申请的主题是:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
我使用此代码显示对话框:
final Dialog dialog = new Dialog(mContext);
dialog.setTitle("Valorar " + APP_TITLE);
dialog.setContentView(sv);
dialog.show();
问题是对话框没有标题显示,我不明白为什么。
我是否对Activity主题或Dialog创建逻辑做错了什么?
感谢。
答案 0 :(得分:1)
我建议使用AlertDialog
而不是普通的Dialog
。如果您使用AlertDialog
的支持库版本,您还将在较旧的API级别上获得材料设计(而不是Holo)。
这也可以解决你的活动的主题,破坏对话框的标题。
对你而言,改变很简单:
new AlertDialog.Builder(mContext)
.setTitle("Valorar " + APP_TITLE)
.setView(sv)
.show();
答案 1 :(得分:0)
我遇到了同样的问题,你是对的。警报对话框在NoActionBar活动中不显示标题栏,我必须在NoActionBar主题中专门定义alertDialogTheme
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="alertDialogTheme">@style/<your dialog theme></item>
</style>
您可以直接在上方使用Theme.AppCompat.Light.Dialog.Alert
(或类似),或者将其作为父级定义您自己的
答案 2 :(得分:0)
<item name="windowNoTitle">true</item>
这会禁用标题,将其设置为false
..
<item name="windowNoTitle">false</item>
来自您的活动主题
以编程方式,您可以尝试: -
final Dialog dialog = new Dialog(mContext);
Window window = dialog.getWindow();
if (window != null) {
window.requestFeature(Window.FEATURE_NO_TITLE);
}