我使用Android 5 SDK中的 ActionBarActivity ,这是我的 theme.xml for v21
<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:colorPrimary">@color/abc1</item>
<item name="android:colorPrimaryDark">@color/abc2</item>
<item name="android:colorAccent">@color/abc3</item>
</style>
但颜色会被忽略,并被默认的蓝绿色替换,所有对话框都显示为无填充。
Problem http://i62.tinypic.com/21cebcz.png
此外,在自定义吐司等其他地方也会忽略填充,只在棒棒糖设备中出现问题。
修改
填充问题是由fitsSystemWindow
造成的,我使用
修复了它
this question.
但强调颜色问题仍然存在,它不仅会影响对话框,还会影响整个应用程序。
答案 0 :(得分:125)
关于强调色。您正在使用AppCompat主题,因此您应该从主题中的命名空间中删除Android。
<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/abc1</item>
<item name="colorPrimaryDark">@color/abc2</item>
<item name="colorAccent">@color/abc3</item>
</style>
关于对话框。 AppCompat不支持它(据我所知) 您可以尝试在 values-v21 文件夹中使用此样式:
<style name="Theme" parent="FrameworkRoot.Theme">
<item name="android:alertDialogTheme">@style/Theme.AlertDialog</item>
</style>
<style name="Theme.AlertDialog" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:colorPrimary">@color/demo_primary_color</item>
<item name="android:colorPrimaryDark">@color/demo_colorPrimaryDark</item>
<item name="android:colorAccent">@color/theme_accent_1</item>
</style>
更新23/04/2015:支持图书馆V.22.1
新的support library v22.1
适用于Dialog。
您可以使用android.support.v7.app.AlertDialog或新的AppCompatDialog。
例如:
import android.support.v7.app.AlertDialog
AlertDialog.Builder builder =
new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle);
builder.setTitle("Dialog");
builder.setMessage("Lorem ipsum dolor ....");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();
使用这样的风格:
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#FFCC00</item>
<item name="android:textColorPrimary">#FFFFFF</item>
<item name="android:background">#5fa3d0</item>
</style>
否则,您可以在当前主题中定义:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- your style -->
<item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
</style>
然后在你的代码中:
import android.support.v7.app.AlertDialog
AlertDialog.Builder builder =
new AlertDialog.Builder(this);
答案 1 :(得分:21)
更新
我已成功应用了appCompat对话框主题的颜色,可能对某人有用:
值/ style.xml
<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
...
/* for android 4 - 4.4, we not define alert dialogs style */
</style>
值-V21 / style.xml
<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
...
/* define alert dialog style for android 5 */
<item name="android:alertDialogTheme">@style/Theme.AlertDialog</item>
</style>
<style name="Theme.AlertDialog" parent="Theme.AppCompat.Light.Dialog">
<!--app abar color in Activties Task manager -->
<item name="colorPrimary">@color/my_color</item>
<!--copy/paste colors -->
<item name="colorAccent">@color/my_color</item>
<!--status bar color -->
<item name="colorPrimaryDark">@color/my_color</item>
</style>
答案 2 :(得分:8)
当前版本的AppCompat不会将颜色应用于AlertDialogs。