我转而使用Google Play服务SettingsApi
,允许用户根据需要在应用内打开位置。
但是,我想在我的应用中提供所有类似的提醒,例如蓝牙,看起来像播放服务显示的位置对话框。
有谁知道怎么做?我尝试在我的AlertDialogs上设置不同的主题,但我无法将其与主题播放服务相匹配。跨设备对话,例如如果它在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服务对话框类似?
答案 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的所有内容都在不同版本上失败。