使应用程序的alertdialogs看起来像Play Services Location Enable对话框?

时间:2015-03-27 19:24:39

标签: android google-play-services android-alertdialog

我转而使用Google Play服务SettingsApi,允许用户根据需要在应用内打开位置。 但是,我想在我的应用中提供所有类似的提醒,例如蓝牙,看起来像播放服务显示的位置对话框。

有谁知道怎么做?我尝试在我的AlertDialogs上设置不同的主题,但我无法将其与主题播放服务相匹配。跨设备对话,例如如果它在Lollipop设备上匹配,它在KitKat设备上不匹配,反之亦然。

例如S4上的Play Services 7.0.0位置对话框如下所示:

Play Services Dialog

标准警告对话框如下所示:

Custom dialog

警告对话框的代码是:

new AlertDialog.Builder(this)
                .setTitle("Alert Title")
                .setMessage("Alert Message")
                .setPositiveButton("Enabled", null)
                .setNegativeButton("Cancel", null)
                .create().show();

如何使我的自定义对话框看起来与Play服务对话框类似?

2 个答案:

答案 0 :(得分:1)

Android资源专为此类任务而设计 - 帮助您根据您的环境选择最合适的资源,例如设备类型,用户语言,平台版本等。如果使用资源文件指定对话框样式,您不需要编写自己的代码来自行检查平台版本。

首先,在style.xml目录下创建一个默认的res/values,以便在使用Theme.Holo.Dialog主题的Honeycomb之前处理这些Android版本:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyThemeSelector" parent="android:Theme.Holo.Dialog">
  </style>
</resources>

对于Honeycomb和KitKat之间的Android版本,您需要Theme.Holo.Panel。此styles.xml应位于res/values-v11

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyThemeSelector" parent="android:Theme.Holo.Panel">
  </style>
</resources>

最后,res/values-v21下的物化样式文件,适用于Lollipop和更高版本的Android版本:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyThemeSelector" parent="android:Theme.Material.Light.Panel">
  </style>
</resources>

之后,您只需在创建MyThemeSelector时指定AlertDialog作为对话框样式。快乐黑客!

答案 1 :(得分:0)

经过大量的实验,我最终不得不检查Build版本并根据它设置我的警报风格。

Google的对话框似乎没有使用任何标准的Android风格。从Material到Holo到DeviceDefault的所有内容都在不同版本上失败。