使用XML设置警报对话框中的消息文本外观(Android API级别23)
我试图在警报对话框中设置消息的文本大小,但多次尝试后都无法设置。另一方面,标题和按钮文本大小可以由主题的字体大小同时控制(在下面的示例中设置为14sp) 警报对话框是按照中描述的方法,使用以下XML样式描述创建的: 以下是我得到的: 显然,消息文本大小比22sp小得多。但是,我可以在运行时调整字体大小:使用XML设置警报对话框中的消息文本外观(Android API级别23),android,xml,android-alertdialog,Android,Xml,Android Alertdialog,我试图在警报对话框中设置消息的文本大小,但多次尝试后都无法设置。另一方面,标题和按钮文本大小可以由主题的字体大小同时控制(在下面的示例中设置为14sp) 警报对话框是按照中描述的方法,使用以下XML样式描述创建的: 以下是我得到的: 显然,消息文本大小比22sp小得多。但是,我可以在运行时调整字体大小: dialog.show(); TextView tv = (TextView) dialog.findViewById(android.R.id.message); if(tv != nul
dialog.show();
TextView tv = (TextView) dialog.findViewById(android.R.id.message);
if(tv != null)
tv.setTextSize(22.0f);
更新
事实证明,如果我导入android.app.AlertDialog,则可以使用此方法调整消息大小。但是,如果我导入android.support.v7.app.AlertDialog,则无法使用此方法对其进行调整。appcompat-v7
AlertDialog
messageTextView
具有硬编码样式@style/TextAppearance.appcompat.Subhead
而不是?android:textAppearanceMedium
。不能通过覆盖主题属性来更改其文本外观
但是,您可以自定义appcompat-v7使用的布局AlertDialog
res/values/styles.xml
@样式/AlertDialog.Custom
@样式/主题
@布局/警报\u对话框\u自定义
...
res/layout/alert\u dialog\u custom.xml
复制一份
abc\u alert\u dialog\u material.xml
(在Android Studio中通过双班次查找),用@Android:id/message
查找TextView
,并根据需要更改它。您可以在样式中覆盖@style/textExearance.AppCompat.Subhead
样式,类似于:
<style name="TextAppearance.AppCompat.Subhead" parent="Base.TextAppearance.AppCompat.Subhead">
<item name="android:textColor">#000000</item>
<item name="android:textSize">100sp</item>
</style>
#000000
100便士
将使用此样式代替appcompat样式非常感谢您的回答!我只是好奇如何找到appcompat-v7 AlertDialog的布局文件?我用关键字alert_dialog搜索了整个AndroidDK目录,但只能找到alert_dialog_holo.xml,它似乎是android.app.AlertDialog的布局转到
sdk\extras\android\m2repository\com\android\support\appcompat-v7\24.1.1
,在可以读取ZIP文件的地方打开appcompat-v7-24.1.1.1.aar
(例如7-Zip或WinRAR),在存档中转到res\layout
并获取所需内容。太棒了!如果没有您的帮助,我将永远无法找到它。小心,它将在应用程序中全局更改此样式。通常它具有android:textColor=?android:textColorPrimary
,因此它在深色和浅色主题中都能正确显示。如果您硬编码颜色#000000如果您使用黑色主题(黑色背景上的黑色文本),则您的应用程序看起来会崩溃。首选更精确的目标方法。如果您需要更改对话框布局中的文本外观,请修改该对话框布局。
dialog.show();
TextView tv = (TextView) dialog.findViewById(android.R.id.message);
if(tv != null)
tv.setTextSize(22.0f);
<style name="AppTheme" parent="Theme.AppCompat">
<item name="alertDialogStyle">@style/AlertDialog.Custom</item>
<item name="alertDialogTheme">@style/AlertDialogTheme</item>
</style>
<style name="AlertDialog.Custom" parent="AlertDialog.AppCompat">
<item name="android:layout">@layout/alert_dialog_custom</item>
</style>
<style name="AlertDialogTheme" parent="Theme.AppCompat.Dialog.Alert">
...
</style>
<style name="TextAppearance.AppCompat.Subhead" parent="Base.TextAppearance.AppCompat.Subhead">
<item name="android:textColor">#000000</item>
<item name="android:textSize">100sp</item>
</style>