今天在做一個(gè)需求的時(shí)候,需要用dialog彈出底部菜單欄,具體樣式就像這樣
結(jié)果我做出來的效果,雖然我覺得也很好看
因?yàn)榇_實(shí)好久沒用過dialog了,忘了很多,找了很多方法,都不行,什么setpadding(0,0,0,0).都沒什么用.
后來看到無知的blog才知道什么地方出了問題,真是服了我自己了.
這是之前的代碼
builder=newAlertDialog.Builder(activity).create();//得到構(gòu)造器
Window dialogWindow =builder.getWindow();
builder.getWindow().clearFlags(//解決自定義dialog不能彈出鍵盤
? ? ? ? WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
這是修正后的代碼
builder=newAlertDialog.Builder(activity,R.style.AppTheme).create();//得到構(gòu)造器
Window dialogWindow =builder.getWindow();
builder.getWindow().clearFlags(//解決自定義dialog不能彈出鍵盤
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
能看出來有什么區(qū)別么O(∩_∩)O~
沒錯(cuò),就是多加了個(gè)R.style.AppTheme.
但是這樣還是不行的,接下來公布完整代碼哈哈哈哈
private voidshowAlertDialog() {
builder=newAlertDialog.Builder(activity,R.style.AppTheme).create();//得到構(gòu)造器
Window dialogWindow =builder.getWindow();
builder.getWindow().clearFlags(//解決自定義dialog不能彈出鍵盤
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
builder.show();
dialogWindow.setContentView(R.layout.dialog_collect_more);
LayoutInflater mInflater = LayoutInflater.from(activity);
View view = mInflater.inflate(R.layout.dialog_collect_more,null);
dialogWindow.setContentView(view);
dialogWindow.setGravity(Gravity.BOTTOM);//顯示在頂部
dialogWindow.setWindowAnimations(R.style.dialogstyle);//給dialog添加動(dòng)畫
//獲得window窗口的屬性
android.view.WindowManager.LayoutParams lp = dialogWindow.getAttributes();
//設(shè)置窗口寬度為充滿全屏
lp.width= WindowManager.LayoutParams.MATCH_PARENT;
//設(shè)置窗口高度為包裹內(nèi)容
lp.height= WindowManager.LayoutParams.WRAP_CONTENT;
lp.flags= WindowManager.LayoutParams.FLAG_DIM_BEHIND;//就是這個(gè)屬性導(dǎo)致window后所有的東西都成暗淡
lp.dimAmount=0.5f;//設(shè)置對(duì)話框的透明程度背景(非布局的透明度)
//將設(shè)置好的屬性set回去
dialogWindow.setAttributes(lp);
//將自定義布局加載到dialog上
}
很簡(jiǎn)單吧,哈哈.
為了照顧初學(xué)者,我把涉及到的參數(shù)全都寫出來