【问题标题】:Using AlertDialog style of Kitkat on Lollipop based phones在基于 Lollipop 的手机上使用 Kitkat 的 AlertDialog 样式
【发布时间】:2015-12-29 19:28:53
【问题描述】:

我在基于 Lollipop 的 Android 手机和基于 Jellybean 的 Android 手机上都可以完美运行相同的应用程序。然而,警报对话框样式(默认)不一样,并且对话框在 Lollipop 手机中看起来很丑陋。

一个简单的例子:

在基于 Jellybean 的手机中:

在基于 Lollipop 的手机中:

我可以在基于 Lollipop 的手机上使用旧版 Android 操作系统的警报对话框样式吗?

如何在应用程序中以编程方式执行此操作?

【问题讨论】:

    标签: android android-5.0-lollipop android-alertdialog android-4.2-jelly-bean


    【解决方案1】:

    如果你想在你的 Pre-Lollipop 设备中使用 Lollipop Dialog,那么你必须使用 android.support.v7.app.AlertDialog 而不是 android.app.AlertDialog

    AlertDialog.Builder builder = new AlertDialog.Builder(activity);
    

    如果你想在 Lollipop Device 中使用 Pre-Lollipop AlertDialog,那么你必须使用以下主题:

    • AlertDialog.THEME_TRADITIONAL
    • AlertDialog.THEME_HOLO_DARK
    • AlertDialog.THEME_HOLO_LIGHT
    • AlertDialog.THEME_DEVICE_DEFAULT_DARK
    • AlertDialog.THEME_DEVICE_DEFAULT_LIGHT

    并使用:

    AlertDialog.Builder builder = new AlertDialog.Builder(activity, theme);
    

    【讨论】:

    • 非常感谢:)。但是,它在代码中显示不推荐使用 ALertDailog.THEME_HOLO_LIGHT。这仍然有效.. 但它会导致任何问题吗?
    • 这已被弃用,但不会引起任何问题。
    • @RohitSuthar 那么我们应该用什么来代替它
    【解决方案2】:

    您可以通过将AlertDialogAlertDialog.Builder 的第二个构造函数参数设置为AlertDialog.THEME_HOLO_LIGHT 来指定对话框的主题:

    new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_LIGHT);
    

    【讨论】:

    • 非常感谢:)。但是,它在代码中显示 ALertDailog.THEME_HOLO_LIGHT 已被弃用。这仍然有效.. 但它会导致任何问题吗?
    • 自 API 23 起似乎已弃用,因此近期不会造成任何问题。
    【解决方案3】:

    试试这个

    AlertDialog.Builder builder = new AlertDialog.Builder(activity, AlertDialog.THEME_HOLO_LIGHT);
    

    希望一切顺利

    【讨论】:

    • 非常感谢:)。但是,它在代码中显示 ALertDailog.THEME_HOLO_LIGHT 已被弃用。这仍然有效.. 但它会导致任何问题吗?
    • 我没有看到它在我的代码中被弃用。还是可以的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2023-03-28
    • 1970-01-01
    • 2015-09-05
    相关资源
    最近更新 更多