我试图在警告对话框中设置邮件的文本大小,但在多次尝试后无法进行。另一方面,标题和按钮文本大小可以同时由主题的字体大小控制(在下面的示例中设置为14sp)。
使用以下XML样式描述创建警报对话框,遵循this blog中描述的方法:
<style name="MyAlertDialogTheme" parent="@android:style/Theme.Holo.Dialog.NoActionBar">
<item name="colorAccent">#ffffff</item>
<!--This controls size of button & title text-->
<item name="android:textSize">14sp</item>
<item name="android:textAppearanceMedium">@style/MyMsgTextAppearance</item>
</style>
<style name="MyMsgTextAppearance" parent="@android:style/TextAppearance.Holo.Medium">
<item name="android:textSize">22sp</item>
<item name="android:textStyle">italic</item>
</style>
使用以下代码在运行时调用主题:
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyAlertDialogTheme);
builder.setCancelable(false);
builder.setTitle("Remove contact");
builder.setMessage("Are you sure you want to delete this contact ?");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
AlertDialog dialog = builder.create();
dialog.show();
显然,消息文本大小远小于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 ,则无法使用此方法进行调整。
答案 0 :(得分:7)
您可以在样式中覆盖@style/TextAppearance.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>
并且将使用此样式代替appcompat样式
答案 1 :(得分:3)
appcompat-v7 AlertDialog
消息TextView
具有硬编码样式@style/TextAppearance.AppCompat.Subhead
,而不是?android:textAppearanceMedium
。您无法通过覆盖主题属性来更改其文本外观。
但是,您可以自定义appcompat-v7 AlertDialog
使用的布局。
<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>
制作abc_alert_dialog_material.xml
的副本(在Android Studio中通过双班查找),找到TextView
@android:id/message
,并随意更改。