材料devise不是样式警报对话框
我已经将appCompat材质devise添加到我的应用程序中,并且看起来警报对话框不使用我的主要,主要的深度或重音颜色。
这是我的基本风格:
<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/apptheme_color</item> <item name="colorPrimaryDark">@color/apptheme_color_dark</item> <item name="colorAccent">@color/apptheme_color</item> <item name="android:textColorPrimary">@color/action_bar_gray</item> </style>
根据我的理解,对话框的button文字也应该使用这些颜色。 我的理解是错的还是还有什么我需要做的?
解:
明显的答案让我走上了正轨。
<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/apptheme_color</item> <item name="colorPrimaryDark">@color/apptheme_color_dark</item> <item name="colorAccent">@color/apptheme_color</item> <item name="android:actionModeBackground">@color/apptheme_color_dark</item> <item name="android:textColorPrimary">@color/action_bar_gray</item> <item name="sdlDialogStyle">@style/DialogStyleLight</item> <item name="android:seekBarStyle">@style/SeekBarNavyTheme</item> </style> <style name="StyledDialog" parent="Theme.AppCompat.Light.Dialog"> <item name="colorPrimary">@color/apptheme_color</item> <item name="colorPrimaryDark">@color/apptheme_color_dark</item> <item name="colorAccent">@color/apptheme_color</item> </style>
使用新的AppCompat v22.1
您可以使用新的android.support.v7.app.AlertDialog 。
只需使用这样的代码:
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);
这里的Kitkat AlertDialog:
当初始化对话框生成器时,传递第二个参数作为主题。 它会自动显示API级别21的材料devise。
AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_DARK);
要么,
AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
AppCompat不会这样做的对话框(至less还没有)
编辑:它现在。 确保使用android.support.v7.app.AlertDialog
你可以考虑这个项目: https : //github.com/fengdai/AlertDialogPro
它可以为您提供与棒棒糖几乎相同的材质主题提示对话框。 兼容Android 2.1。
你可以使用
材料devise库
材料devise图书馆的漂亮的警报对话框 ,button,和其他东西,如小吃店。 目前它已经很发达。
指南,代码,示例 – https://github.com/navasmdc/MaterialDesignLibrary
指导如何将库添加到Android Studio 1.0 – 如何将材料devise库导入到Android Studio?
。
快乐编码;)
试试这个库:
https://github.com/avast/android-styled-dialogs
它基于DialogFragments
而不是AlertDialogs
(如@afollestad中的)。 主要优点:对话框在旋转和callback仍然工作后不会消失。
出于某种原因,android:textColor只能更新标题颜色。 您可以使用a更改消息文本的颜色
SpannableString.AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.MyDialogTheme)); AlertDialog dialog = builder.create(); Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers"); wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); dialog.setMessage(wordtoSpan); dialog.show();