天天看點

AlertDialog更改标題顔色,字型等

更改alertdialog标題的方法google目前沒有提供,隻能通過其他辦法

一種辦法是:首先在源代碼中找到有個叫alertcontroller的類,這個類就是alertdialog的實作類,是沒有對外公開的,然後在這個類中有個私有成員變量叫mtitleview,這個就是alertdialog的title的textview,是以隻要得到這個成員變量的執行個體,即可自定義alertdialog的title

得到這個的執行個體變量的方法通過兩步反射來實作,如下:

[java] view

plaincopy

alertdialog dialog = (alertdialog) getdialog();  

try {  

    field malert = alertdialog.class.getdeclaredfield("malert");  

    malert.setaccessible(true);  

    object alertcontroller = malert.get(dialog);  

    field mtitleview = alertcontroller.getclass().getdeclaredfield("mtitleview");  

    mtitleview.setaccessible(true);  

    textview title = (textview) mtitleview.get(alertcontroller);  

    title.settextcolor(0xff33b5e5);   

} catch (nosuchfieldexception e) {  

    e.printstacktrace();  

} catch (illegalargumentexception e) {  

} catch (illegalaccessexception e) {  

}  

當然還有其他辦法,比如直接把title隐藏掉,然後在content view中自定義一個title出來等等