【发布时间】:2015-04-13 14:39:53
【问题描述】:
我正在使用 AppCompat 编写一个材料设计风格的应用程序。由于 AppCompat 不影响对话框,因此我将对话框设置为这样:
styles.xml:
<style name="AppTheme.Base" parent="Theme.AppCompat">
<!-- Set AppCompat’s color theming attrs -->
<item name="colorPrimary">@color/green</item>
<item name="colorPrimaryDark">@color/green_darker</item>
<item name="colorAccent">@color/accent</item>
<item name="android:alertDialogTheme">@style/alertDialog</item>
<item name="android:dialogTheme">@style/alertDialog</item>
</style>
<style name="alertDialog" parent="Theme.AppCompat.Dialog">
<item name="colorPrimary">@color/green</item>
<item name="colorPrimaryDark">@color/green_darker</item>
<item name="colorAccent">@color/accent</item>
</style>
我在 android api >= 21 上得到的正是我想要的,但在其他设备上,我最终会在对话框周围出现一个“框”。
有没有办法摆脱对话框周围的“框”,甚至可以在 api
Api
API 上的应用 >= 21:
【问题讨论】:
-
对于皮肤警报对话框,您需要使用
android:Theme.DeviceDefault.Dialog.Alert(始终为原生外观)主题。否则背景将被复制。在 API 21 上你看不出有什么区别,但我怀疑会有透支。对于作为对话框的皮肤活动,请使用android:Theme.DeviceDefault.Dialog(原生外观)或Theme.AppCompat.Dialog(材质外观)主题。 -
android:Theme.DeviceDefault.Dialog仅适用于 API > 14。我在 API 11 上使用什么? -
此外,这也会过度绘制非棒棒糖 api 的边框。 image
-
老实说,没有人在乎 API 11,实际使用中几乎没有 API 11 的设备。你不妨让你的 minSdk=14。
-
是的,我上面说的。您在这些对话框中使用的文本外观不能继承或成为
TextAppearance.AppCompat.*。定义自定义文本外观样式并使用它们。继承@android:TextAppearance并根据Material Design规范(文本类型Body 1)自定义textColor和textSize,你会没事的。
标签: android android-support-library material-design android-appcompat