背景透明度設置方法:android dialog背景透明代碼

安卓封裝的AlertDialog是非常好用的一個dialog,滿足平時開發中的大部分工作。

但是畢竟開發中,dialog的樣式必須要和app主題相符合,這就需要修改dialog的樣式。

但是dialog並沒有提供改變樣式的方法,這就要我們自己去弄了。

網上提供了很多,有用style 有用java 反射去獲取控件的。

但是研究源碼可以看到,其實可以用代碼去設置。

先看看不作任何修改的時候,alterdialog的顯示。

ps:(Button可以在style中修改可以通過查看源碼的方法找到,他的style裏面button顏色對應的字段就是colorAccent)

安卓AlertDialog修改內容的字體顏色和大小
安卓AlertDialog修改內容的字體顏色和大小
安卓AlertDialog修改內容的字體顏色和大小
安卓AlertDialog修改內容的字體顏色和大小
安卓AlertDialog修改內容的字體顏色和大小

當我們要修改title 或者message 或者button的顏色的時候,alterdialog並沒有提供方法。

但是研究源碼可以看到alterDialog提供了getButton();

安卓AlertDialog修改內容的字體顏色和大小

源碼在AlterDialog.class裏面

安卓AlertDialog修改內容的字體顏色和大小

源碼位置在AlertController.class裏面

原來這樣就可以獲取Button了,那麼Button的字體和顏色就不成什麼問題了。

注意必須dialog.show()之後才可以獲取到Button不然獲取到的Button為空的。

因為返回的參賽如mButtonPositive實例化是在setupButtons這個方法裏面,而這個方法只有alterDialog在show的時候才會調用

安卓AlertDialog修改內容的字體顏色和大小

源碼位置在AlertController.class裏面

那麼問題來了message和title呢,alterDialog並沒有提供這個方法,這個怎麼獲取,

其他上面Button的實例化已經提供了一個方法,看圖

安卓AlertDialog修改內容的字體顏色和大小

他的Button是通過findById去獲取的,那麼我們title和message不一樣可以用findById么。

ctrl+鼠標左鍵,查看布局源碼,找到title和message的id。如圖

安卓AlertDialog修改內容的字體顏色和大小

源碼位置在alter_dialog.xml裏面

安卓AlertDialog修改內容的字體顏色和大小

源碼位置在alter_dialog.xml裏面

那麼我們就可以通過Id去獲取了

安卓AlertDialog修改內容的字體顏色和大小

至於為什麼我上面用android.R.id.message去獲取id是因為項目中的ids.xml中已經有了message這個id了

控件獲取到了修改字體和顏色 不就是小case了。

安卓AlertDialog修改內容的字體顏色和大小

效果圖

安卓AlertDialog修改內容的字體顏色和大小

DialogTitle是繼承TextView的所有上面的查找Title的控件 我直接轉化成TextView

安卓AlertDialog修改內容的字體顏色和大小

多研究源碼收穫還是很多的。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/222596.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:11
下一篇 2024-12-09 14:11

相關推薦

發表回復

登錄後才能評論