今天在做一个需求的时候,需要用dialog弹出底部菜单栏,具体样式就像这样
结果我做出来的效果,虽然我觉得也很好看
因为确实好久没用过dialog了,忘了很多,找了很多方法,都不行,什么setpadding(0,0,0,0).都没什么用.
后来看到无知的blog才知道什么地方出了问题,真是服了我自己了.
这是之前的代码
builder=newAlertDialog.Builder(activity).create();//得到构造器
Window dialogWindow =builder.getWindow();
builder.getWindow().clearFlags(//解决自定义dialog不能弹出键盘
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
这是修正后的代码
builder=newAlertDialog.Builder(activity,R.style.AppTheme).create();//得到构造器
Window dialogWindow =builder.getWindow();
builder.getWindow().clearFlags(//解决自定义dialog不能弹出键盘
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
能看出来有什么区别么O(∩_∩)O~
没错,就是多加了个R.style.AppTheme.
但是这样还是不行的,接下来公布完整代码哈哈哈哈
private voidshowAlertDialog() {
builder=newAlertDialog.Builder(activity,R.style.AppTheme).create();//得到构造器
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添加动画
//获得window窗口的属性
android.view.WindowManager.LayoutParams lp = dialogWindow.getAttributes();
//设置窗口宽度为充满全屏
lp.width= WindowManager.LayoutParams.MATCH_PARENT;
//设置窗口高度为包裹内容
lp.height= WindowManager.LayoutParams.WRAP_CONTENT;
lp.flags= WindowManager.LayoutParams.FLAG_DIM_BEHIND;//就是这个属性导致window后所有的东西都成暗淡
lp.dimAmount=0.5f;//设置对话框的透明程度背景(非布局的透明度)
//将设置好的属性set回去
dialogWindow.setAttributes(lp);
//将自定义布局加载到dialog上
}
很简单吧,哈哈.
为了照顾初学者,我把涉及到的参数全都写出来