1. 程式人生 > >Android 自定義Dialog小結

Android 自定義Dialog小結

關於自定義佈局的Dialog,總是會遇到各種各樣的問題,作為一個菜鳥,想想還是打算專門開一篇總結自己遇到的各種問題。歡迎大佬們指點

自定義佈局寬度和位置問題

自定義佈局,就是自己自由地設定Dialog的樣式,所以肯定會自己寫一個Layout佈局,並把它加載出來,這才是我們想要的,但是經常會出現,明明我寫的佈局寬度是MatchParent的,但是顯示出來各種不是。或者我想讓它從底部彈出無法實現等等。

先上效果圖:

這種問題,統一可以參考下面的程式碼實現


    LayoutInflater inflater = LayoutInflater.from(this);
    View view = inflater.inflate(R.layout.dialog_share2_layout, null);
    //這裡的R.id.show_main就是我的佈局,最外面的LinearLayout
    LinearLayout showMain = (LinearLayout) view.findViewById(R.id.show_main);

    

    //建立自定義樣式的Dialog
    mShareDialog = new Dialog(this, R.style.invitation_dialog);

    //拿到Dialog的Window, 修改Window的屬性
    Window window = mShareDialog.getWindow();

    //這個能讓佈局寬度填滿螢幕
    window.getDecorView().setPadding(0,0,0,0);

    // 獲取Window的LayoutParams
    WindowManager.LayoutParams layoutParams = window.getAttributes();
    layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;

    //對話方塊放底部
    layoutParams.gravity = Gravity.BOTTOM;
    window.setAttributes(layoutParams);

    mShareDialog.setCancelable(true);

    //最後才載入自定義佈局
    mShareDialog.setContentView(showMain);

後續再繼續新增……