Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XML设置警报对话框中的消息文本外观(Android API级别23)_Android_Xml_Android Alertdialog - Fatal编程技术网

使用XML设置警报对话框中的消息文本外观(Android API级别23)

使用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

我试图在警报对话框中设置消息的文本大小,但多次尝试后都无法设置。另一方面,标题和按钮文本大小可以由主题的字体大小同时控制(在下面的示例中设置为14sp)

警报对话框是按照中描述的方法,使用以下XML样式描述创建的:

以下是我得到的:

显然,消息文本大小比22sp小得多。但是,我可以在运行时调整字体大小:

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
message
TextView
具有硬编码样式
@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>