本來簡簡單單的彈個Dialog出來,代碼都不好意思粘出來
AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.buttonDialog)
.setTitle(R.string.not_wifi)
.setNegativeButton(R.string.video_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton(R.string.video_continue, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
play();
}
});
notWifiDialog = builder.create();
結果一運行:
這什麼鬼啊????關鍵是在按鈕區域單擊還能夠響應,但是文字呢????
檢查代碼沒問題啊!查找資料builder的創建時序也是對的啊!可按鈕就是不出來。
去開發者模式開啓“顯示佈局邊界”一看,艹坑爹呢吧
可以看出按鈕的邊界確實存在但是文字並沒有顯示,我創建的Dialog沒指定style使用的是系統啊!然後懷疑是否其他人改了某屬性,翻遍了項目沒有發現證據支持。改而懷疑手機系統的彈框屬性,證據在這:
這個彈框是MediaController因加載視頻失敗而彈出的系統框,它也沒有顯示按鈕。
知道了原因就好辦了,改style唄,創建Dialog時指定style就OK了;
至於怎麼改自己去找吧!這方面的資料挺多的
<style name="buttonDialog"
parent="@style/Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#000000</item>
</style>
至於系統彈框按鈕不顯示,直接修改AppTheme修改全局的dialog就可以了,也不贅述;
最後再鄙視一把三星,按鈕顏色弄成純白坑爹呢!