三星手機Dialog不顯示按鈕的坑

本來簡簡單單的彈個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就可以了,也不贅述;
最後再鄙視一把三星,按鈕顏色弄成純白坑爹呢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章