使应用程序警报对话框看起来像 Play Services Location Enable 对话框?
Make app's alertdialogs look like Play Services Location Enable dialog?
我改用 Google Play 服务 SettingsApi
以允许用户在需要时从应用程序内部打开位置。
但是,我希望我的应用程序中有所有类似的警报,例如蓝牙,看起来像播放服务显示的位置对话框。
有人知道怎么做吗?我尝试在我的 AlertDialogs 上设置不同的主题,但我无法让它与跨设备的 Play Services 对话框的主题相匹配,例如如果它在 Lollipop 设备上匹配,则在 KitKat 设备上不匹配,反之亦然。
例如S4 上的 Play Services 7.0.0 位置对话框如下所示:
标准的警报对话框如下所示:
警报对话框的代码是:
new AlertDialog.Builder(this)
.setTitle("Alert Title")
.setMessage("Alert Message")
.setPositiveButton("Enabled", null)
.setNegativeButton("Cancel", null)
.create().show();
如何使我的自定义对话框看起来与 Play 服务对话框相似?
经过大量实验,我最终不得不检查构建版本并根据它设置我的警报样式。
Google 的对话框似乎没有使用任何标准的 Android 样式。从 Material 到 Holo 到 DeviceDefault 的所有内容在不同版本上都失败了。
Android 资源正是为此类任务而设计的 -- 帮助您 select 根据您的环境(例如设备类型、用户语言、平台版本等)选择最合适的资源。如果您使用资源文件指定对话框样式,则无需编写自己的代码来自行检查平台版本。
首先,在res/values
目录下创建一个默认的style.xml
来处理Honeycomb之前的Android版本,使用Theme.Holo.Dialog
主题:
<?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>
之后,您只需在创建 AlertDialog
时指定 MyThemeSelector
作为对话框样式。快乐黑客!
我改用 Google Play 服务 SettingsApi
以允许用户在需要时从应用程序内部打开位置。
但是,我希望我的应用程序中有所有类似的警报,例如蓝牙,看起来像播放服务显示的位置对话框。
有人知道怎么做吗?我尝试在我的 AlertDialogs 上设置不同的主题,但我无法让它与跨设备的 Play Services 对话框的主题相匹配,例如如果它在 Lollipop 设备上匹配,则在 KitKat 设备上不匹配,反之亦然。
例如S4 上的 Play Services 7.0.0 位置对话框如下所示:
标准的警报对话框如下所示:
警报对话框的代码是:
new AlertDialog.Builder(this)
.setTitle("Alert Title")
.setMessage("Alert Message")
.setPositiveButton("Enabled", null)
.setNegativeButton("Cancel", null)
.create().show();
如何使我的自定义对话框看起来与 Play 服务对话框相似?
经过大量实验,我最终不得不检查构建版本并根据它设置我的警报样式。
Google 的对话框似乎没有使用任何标准的 Android 样式。从 Material 到 Holo 到 DeviceDefault 的所有内容在不同版本上都失败了。
Android 资源正是为此类任务而设计的 -- 帮助您 select 根据您的环境(例如设备类型、用户语言、平台版本等)选择最合适的资源。如果您使用资源文件指定对话框样式,则无需编写自己的代码来自行检查平台版本。
首先,在res/values
目录下创建一个默认的style.xml
来处理Honeycomb之前的Android版本,使用Theme.Holo.Dialog
主题:
<?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>
之后,您只需在创建 AlertDialog
时指定 MyThemeSelector
作为对话框样式。快乐黑客!