android全屏dialog
Ⅰ android 如何讓自定義dialog的寬度充滿整個屏幕
方案:
通過設置Dialog的樣式實現
步驟:
java">1、添加style
<stylename="Dialog_FS">
<itemname="android:windowFullscreen">true</item>
<itemname="android:windowNoTitle">true</item>
</style>
2、代碼裡面設置dialog的樣式
Dialogdialog=newDialog(this,R.style.Dialog_FS);//設置全屏樣式
dialog.setContentView(R.layout.main);//設置dialog的布局
dialog.show();//顯示dialog界面
Ⅱ Android 全局彈窗(Dialog)快速實現
項目中 雲信IM同一帳號,在多處登錄時,要實現互踢功能。
在收到被踢通知時,彈窗提示用戶被踢,點擊繼續跳轉到登錄界面,取消則關閉App
由於不知道用戶會在哪個界面操作時被踢,接受通知的那個Activity有可能已經失去上下文,導致空指針異常!從而無法 Toast 或 彈窗。
能實現 全局Dialog 就好了!
由於退出App的時候,要清除之前所有的Activity,其實就是退出登錄功能。
我採用 集合法 來實現的退出登錄 ,在BaseActivity中記錄所有打開過的Activity,然後遍歷清除。
然後在 BaseActivity 中調用 addActivity() ,不在贅述!
如果能獲取到用戶當前觀看的界面,然後將上下文傳過去,就可以實現全局Dialog
當前頁面也就是棧頂Activity,也就是最後添加的那個Activity。如下:
然後在使用的地方獲取
即:
注意:之所以返回AppCompatActivity,而不是Activity,
是因為彈出Dialog 需要 supportFragmentManager ,Activity 獲取不到
以上就可以實現全局Dialog了。
另外,上述Dialog是用DialogFragment寫的,感興趣可閱 《DialogFragment 去除內容區稜角背景(不規則圓角)》 ,附有工具類及用法。
Ⅲ 【Android】自定義全屏dialog
一、在themes.xml中添加自定義dialog的樣式
二、創建dialog基類
三、創建自定義dialog的布局
四、創建自定義dialog
五、在activity中使用自定義dialog
Ⅳ Android Dialog 設置Margin方式總結
在日常開發中,總是會遇到各種Dialog的使用,調整根據UI設計的不同,會經常調整Dialog在屏幕中的位置,這篇文章主要介紹,在使用 DialogFragment 時設置Margin的幾種方式。
如下是最後實現的效果:
設置兩邊margin效果:
設置頂部margin效果:
全屏的Dialog設置頂部Margin:
這個比較容易,主要就是設置一個高度wrap_content,寬度match_parent的dialog,然後在dialog的布局中設置margin就可以了。
如下是xml文件:
然後在DialogFragment的onResume里對Window做一些處理:
這種情況margin可以通過 WindowManager.LayoutParams 的 verticalMargin 屬性來實現。 verticalMargin 和xml裡面設置的layout_margin不一樣, verticalMargin 是通過設置一個0-1的float變數,來標識margin在屏幕中的佔比。
如下是在DialogFragment的onResume中的處理:
xml文件(和1的類似,沒有什麼特別):
這里如果使用2中的方法,沒有任何效果。這里使用另外一種方式實現-- insetDrawable 。
這里的實現是在xml裡面寫一個 <inset> :
在DialogFragment的onResume方法中: