Android : Theme.Holo VS Theme.AppCompat
Android : Theme.Holo VS Theme.AppCompat
我使用“@android:style/Theme.Holo”作为我的游戏主题:
但是为了能够设置小吃店小部件,我别无选择,只能使用“@style/Theme.AppCompat”,否则我会收到此错误消息:
You need to use a Theme.AppCompat theme (or descendant) with the design library
问题是“@style/Theme.AppCompat”在视觉上完全不同:
我该怎么做才能保持与“@android:style/Theme.Holo”相同的视觉效果,但同时能够使用小吃店小部件?
编辑
使用 Yoann Hercouet 的解决方案,结果如下:
少了什么?
尝试通过更改对话框的默认样式来更新您的应用主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="alertDialogTheme">@android:style/Theme.Holo.Dialog</item>
</style>
编辑:
不确定为什么它没有改变任何东西,它适用于我的应用程序,也许可以尝试其他方式并创建自定义样式:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="alertDialogTheme">@style/myAlertDialogStyle</item>
</style>
<style name="myAlertDialogStyle" parent="android:style/Theme.Holo.Dialog">
...
</style>
我终于找到了解决方案:
AndroidManifest.xml :
<application
android:theme="@style/Theme.AppCompat"
...
MyDialog.java :
new AlertDialog.Builder(new ContextThemeWrapper(context, android.R.style.Theme_Holo_Dialog));
而不是:
new AlertDialog.Builder(context);
我使用“@android:style/Theme.Holo”作为我的游戏主题:
但是为了能够设置小吃店小部件,我别无选择,只能使用“@style/Theme.AppCompat”,否则我会收到此错误消息:
You need to use a Theme.AppCompat theme (or descendant) with the design library
问题是“@style/Theme.AppCompat”在视觉上完全不同:
我该怎么做才能保持与“@android:style/Theme.Holo”相同的视觉效果,但同时能够使用小吃店小部件?
编辑 使用 Yoann Hercouet 的解决方案,结果如下:
少了什么?
尝试通过更改对话框的默认样式来更新您的应用主题:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="alertDialogTheme">@android:style/Theme.Holo.Dialog</item>
</style>
编辑:
不确定为什么它没有改变任何东西,它适用于我的应用程序,也许可以尝试其他方式并创建自定义样式:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="alertDialogTheme">@style/myAlertDialogStyle</item>
</style>
<style name="myAlertDialogStyle" parent="android:style/Theme.Holo.Dialog">
...
</style>
我终于找到了解决方案:
AndroidManifest.xml :
<application
android:theme="@style/Theme.AppCompat"
...
MyDialog.java :
new AlertDialog.Builder(new ContextThemeWrapper(context, android.R.style.Theme_Holo_Dialog));
而不是:
new AlertDialog.Builder(context);