AlertDialog Material Design使用styles.xml进行自定义

时间:2015-11-19 16:18:27

标签: android xml android-layout alertdialog android-alertdialog

我对AlertDialog的自定义内容(消息部分)有问题。 正如您在我的代码中看到的,我能够为AlertDialog自定义标题和按钮。

我需要什么?

在AlertDialog中自定义消息。 我需要将字体系列更改为RobotoLight,将textSize更改为16sp,将行高更改为24 sp。

我不想做什么?

我不想将自定义布局应用于我将构建的每个alertdialog。我想在styles.xml中自定义AlertDialog,因此样式将自动应用于我将在代码中使用的每个AlertDialog(因为它有很多,一个带一个按钮,另一个有很多,其他有图标,其他没有图标等)。

我不想使用任何外部库。

我有什么?

我已经以正确的方式应用了我的主题,因为标题和按钮的自定义样式正在运行。请参阅下面的代码以参考我的更改。

<style name="Theme" parent="@android:style/Theme.DeviceDefault.Wallpaper.NoTitleBar">
   [...]

    <item name="android:alertDialogTheme">@style/AlertDialog</item>

</style>

我的styles.xml文件:

<style name="Theme" parent="@android:style/Theme.DeviceDefault">
    <item name="android:alertDialogTheme">@style/AlertDialog</item>

</style>

然后是styles.xml的第二部分

<style name="AlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:windowTitleStyle">@style/AlertDialogTitle</item>
    <!-- colorAccent : color of borderless buttons #51c1c0 -->
    <item name="colorAccent">@color/highlight</item>
    <item name="android:buttonStyle">@style/AlertDialogButton</item>
    <item name="android:textColorPrimary">@color/secondary_text_material_light</item>
    <item name="android:background">@color/window_background_light</item>
    <item name="android:lineSpacingMultiplier">1.1</item>
</style>

<style name="AlertDialogTitle" parent="TextAppearance.AppCompat.Title">
    <item name="android:fontFamily">@string/roboto_light_font</item>
    <item name="android:textColor">@color/dialog_title_color</item>
    <item name="android:textSize">20sp</item>
</style>

<style name="AlertDialogButton" parent="TextAppearance.AppCompat.Button">
    <item name="android:fontFamily">@string/roboto_regular_font</item>
    <item name="android:textSize">14sp</item>
</style>

我尝试了什么?

我已经阅读了大量的教程。在每个作者中,作者都​​能够向我们展示如何仅自定义标题和按钮。

我已经花费了大量的stackoverflow q&amp; a,不幸的是我无法找到答案。

我试图改变textAppearance,textAppearanceMedium,textSizes,textFamily,textEverything等,但我没有实现我的目标。 我试图为textAppearance创建样式,从TextAppearance.AppCompat.Medium,TextAppearance.Material,TextAppearance.Material.Medium等继承“class”,什么也没有。

有趣的是什么: http://blog.supenta.com/2014/07/02/how-to-style-alertdialogs-like-a-pro/

我使用了从上面教程中截取的代码并且它有效(AlertDialog的消息部分为黄色)。当我尝试将主题从Holo更改为Material时,它的结尾很糟糕。

请帮忙! :) 感谢。

0 个答案:

没有答案