一个简单的AlertDialog给了我意想不到的结果:丢失了字母。这只发生在AlertDialog中。在我的主题中,我将monospace
设置为我的默认字体,然后将monospace
字体替换为客户端提供给我的自定义字体(.otf)。
我在Android 25上得到了预期的结果,并且可以在19上重现该问题。我还没有尝试过这些版本之间的任何版本。
我尝试过的一些事情:
删除自定义字体以查看它是否是罪魁祸首,导致丢失所有文本而不是位。还尝试将自定义字体切换为sans
或其他字体作为我的默认字体。
创建自定义对话框主题
更改颜色以查看文字是否与背景相符,我不相信是这种情况。
硬编码文字。没有区别
使用android.app.AlertDialog
而不是android.support.v7.app.AlertDialog
。没有区别。
我有DatePickerDialog和TimePickerDialog的样式。我尝试删除它们,看看它们是否在干扰。显然不是,那些风格是vs 21>我的问题是在19.我没有为AlertDialog指定任何样式或主题。我的根主题是Theme.AppCompat.DayNight.NoActionBar
。主题的其余部分仅设置主要和次要颜色。没什么太奢侈的。
Android 25 预期结果
Android 19 wtf结果
这是代码的范围:
import android.support.v7.app.AlertDialog;
public static Maybe<Boolean> showConfirmDialog(Context context, int title, int message, int positive, int negative) {
return Maybe.create(e -> {
final AlertDialog dialog = new AlertDialog.Builder(context)
.setTitle(title)
.setMessage(message)
.setPositiveButton(positive, (d, w) -> e.onSuccess(true))
.setNegativeButton(negative, (d, w) -> e.onSuccess(false))
.show();
dialog.setOnDismissListener(d -> e.onComplete());
e.setCancellable(() -> {
if (dialog != null && dialog.isShowing())
dialog.dismiss();
});
});
}
我最终创建了一个从头开始的对话框,因为我无法弄清楚我所经历的时间是怎么回事,但这让我感到困扰,我需要得到一个解决方案。
答案 0 :(得分:0)
我和supprot alertdialog有类似的问题。我通过自定义主题对话框解决了它。试试这个变种。添加到您的构建器自定义主题:
new AlertDialog.Builder(getContext(), R.style.DefaultAlertDialogTheme)
这里是你的style.xml:
<style name="DefaultAlertDialogTheme" parent="Base.Theme.AppCompat.Light.Dialog">
</style>