Android 6.0对话框文本不会出现

我更新了我的手机到Android 6.0,我有这两个对话框的问题:

1)标题显示,但消息不是警报对话(求助):

new AlertDialog.Builder(context).setTitle("Title").setMessage("Message"); 

2)自定义对话框片段的标题不显示(不解决):

  getDialog().setTitle("Title"); 

在棒棒糖或旧版本中没有这样的问题,只是在将手机更新为棉花糖后才出现问题。

如何解决这个问题?

Solutions Collecting From Web of "Android 6.0对话框文本不会出现"

使用构造函数的主题为棒棒糖和较新的Android版本:

黑暗的主题

  AlertDialog.Builder builder; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { builder = new AlertDialog.Builder(context, android.R.style.Theme_Material_Dialog_Alert); } else { builder = new AlertDialog.Builder(context); } 

轻的主题

  AlertDialog.Builder builder; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { builder = new AlertDialog.Builder(context, android.R.style.Theme_Material_Light_Dialog_Alert); } else { builder = new AlertDialog.Builder(context); } 

我遇到了几个答案,说你应该在你的应用程序主题中使用以下内容:

 <item name="android:alertDialogTheme">@style/Theme.AppCompat.Light.Dialog.Alert</item> 

虽然这是正确的,但它并不适用于我所有的地方。 最后,我意识到在某些地方我使用了常规的AlertDialog构build器,而在其他地方我使用的是支持构build器。 如果您使用AlertDialog支持,请确保在主题中包含以下内容:

 <item name="alertDialogTheme">@style/Theme.AppCompat.Light.Dialog.Alert</item> 

只要把它放在你的Base Theme风格标签中的样式文件中,你就可以走了

 <item name="android:alertDialogTheme">@style/Theme.AppCompat.Light.Dialog.Alert</item> 

回答2) ,我们需要在onCreateDialog()之前调用setStyle() ,因为onCreateDialog()中使用了theme

 @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setStyle(STYLE_NORMAL, android.R.style.Theme_Material_Light_Dialog_Alert); } Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.setTitle(R.string.dialog_title); return dialog; } 

我试图通过制作我自己的风格来解决这个问题。

你的对话框应该是这样的,你的风格指向这个对话框将写在下面

 new AlertDialog.Builder(new ContextThemeWrapper(Context, R.style.Dialog)) .setTitle("Title") .setMessage("Sample Message ...").show(); 

R.style.Dialog ::

 <style name="Dialog"> <item name="android:textColorPrimary">@color/primary_text</item> <item name="android:textColor">@color/primary_color</item> </style> 

颜色::

 <color name="primary_text">#212121</color> <color name="primary_color">#2196f3</color> 

最后输出应该是这样的

注意 :“android:textColorPrimary”用于对话框setMessage,“android:textColor”用于对话框setTitle; 我不使用setPositive和setNegativebutton和侦听器在我的对话框对象,但你可以看到他们在图片,如果你想你可以使自己的对话框对象。

 new AlertDialog.Builder(context) .setTitle("Delete entry") .setMessage("Are you sure you want to delete this entry?") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // continue with delete } }) .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // do nothing } }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); 

希望对你有帮助………….

我怀疑你结束了在白色背景上显示白色文本! (看截图,(i)图标也不能很好地显示出来,这表明它被devise成在白色以外的背景上显示。

你可以使用构造函数public AlertDialog.Builder (Context context, int themeResId)来确保你使用了一个特定的主题来devise你的对话框,其中的Theme_Material_Dialog可能就是你想要的。

也许你的主要文本颜色是对话框的背景颜色,在这种情况下在styles.xml中使用(只是一个例子):

 <style name="AlertDialog" parent="@android:style/Theme.Material.Light.Dialog.Alert"> <item name="android:textColor">#000000</item> </style> 

并在对话框创build:

 new AlertDialog.Builder( new ContextThemeWrapper(getContext(), R.style.AlertDialog)) ).setMessage("test"); 
 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the Builder class for convenient dialog construction AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(R.string.dialog_fire_missiles) .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // FIRE ZE MISSILES! } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User cancelled the dialog } }); // Create the AlertDialog object and return it return builder.create(); } 

一旦检查这个希望,这将工作…….

在我的情况下,所有的对话框都有与字体(标题和消息)相同的颜色。 我已经做了什么来解决这个状态是在我的主题颜色属性的变化。 我将xml主题文件复制到“res / values-v22”中,并为棉花糖设置了不同的颜色。

 <resources> <style name="LywCompatTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:textColorPrimary">@android:color/tertiary_text_dark</item> </style> </resources> 

或仅用于对话

 <resources> <style name="LywCompatTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:alertDialogTheme">@style/LywAlertDialogStyle</item> </style> <style name="LywAlertDialogStyle" parent="Base.Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColorPrimary">@color/lyw_secondary_text_color</item> </style> </resources> 

当使用DialogFragment你需要

  1. 添加样式

     <style name="CustomDialog" parent="@style/Theme.AppCompat.Light.Dialog"> <item name="android:windowNoTitle">false</item> </style> 
  2. 在你的DialogFragment添加getTheme

     public class CustomDialogFragment extends DialogFragment{ public int getTheme() { return R.style.CustomDialogFragment; } . . . 

而就是这样!