AlertDialog修改title,message,button样式

我们一直在用系统的Dialog,但是我们想把其中的一些显示风格换成我们自己的,比如,我们需要改变Dialog的title,message,或者button的颜色,以及字体。那么我们应该怎么做呢? 一般,我们在设置title,message的时候,并没有setTitleSize,setMessageSize的方法供我们来调用,这个时候怎么办呢,由于title在这其中有点特殊,我们先说message和button。
  1. 我们需要将整个Dialog展示出来,即,初始化后设置各种属性,然后调用show()去展示
AlertDialog dlgShowBack = new AlertDialog.Builder(this).create();
dlgShowBack.setTitle("提示");
dlgShowBack.setMessage("您确定要退出?");


dlgShowBack.setButton(DialogInterface.BUTTON_NEGATIVE,"取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

    }
});
dlgShowBack.setButton(DialogInterface.BUTTON_POSITIVE,"确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
        finish();
    }
});
dlgShowBack.show();

2,在Dilaog初始化完成之后,再来获取它的一些属性进行设置。 message我们可以通过android.R.id.message来获取。即:
((TextView)findViewById(android.R.id.message)).setTextSize(17);

button我们可以以下方式来获取,然后进行设置。

Button btnPositive = 
dlgShowBack.getButton(android.app.AlertDialog.BUTTON_POSITIVE);
Button btnNegative = 
dlgShowBack.getButton(android.app.AlertDialog.BUTTON_NEGATIVE);
btnNegative.setTextColor(getResources().getColor(R.color.colorPrimary));
btnNegative.setTextSize(18);
btnPositive.setTextColor(getResources().getColor(R.color.colorPrimary));
btnPositive.setTextSize(18); 

注意:这里这些属性的获取都一定是要在Dialog调用完show()方法之后,即Dialog展示出来之后。要不就会NullPointException。

3,title的设置 title在这里是比较特殊的,它和message一样,有android.R.id.title,但是这样获取到的title为null,因为Android系统是不允许我们来修改title的,那么怎么办呢?我们可以在setTitle()之前对title内容的属性进行设置。

SpannableStringBuilder Builder = new 
SpannableStringBuilder(getString(R.string.title_dlg_delete));

StyleSpan spanState1 = new 
StyleSpan(Typeface.BOLD);
Builder.setSpan(spanState1,0,getString(R.string.title_dlg_delete).length(), 

Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
dlgShowBack.setTitle(Builder);

这样就改变了title的字体。

4,最后来张效果图。
这里写图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值