AlertDialog中EditText不能获取焦点以及不宽度不能自动铺满的完美解决方案_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > AlertDialog中EditText不能获取焦点以及不宽度不能自动铺满的完美解决方案

AlertDialog中EditText不能获取焦点以及不宽度不能自动铺满的完美解决方案

 2015/4/14 11:24:23  just keep moving  程序员俱乐部  我要评论(0)
  • 摘要:问题分析:因为dialog的Attributes使用的默认的,其中一个属性就是:flags,就是这个属性导致不能获取焦点,默认的是FLAG_NOT_FOCUSABLE,故名思义不能获取输入焦点,所以修改这个属性就行了。具体代码如下:AlertDialogdialog=newAlertDialog.Builder(context).create();dialog.setCanceledOnTouchOutside(true);dialog.show();Windowwindow=dialog
  • 标签:解决方案 解决 完美


问题分析:

因为 dialog的Attributes使用的默认的,其中一个属性就是:flags ,就是这个属性导致不能获取焦点,默认的是FLAG_NOT_FOCUSABLE,故名思义不能获取输入焦点,所以修改这个属性就行了。具体代码如下:



AlertDialog dialog = new AlertDialog.Builder(context).create();
        dialog.setCanceledOnTouchOutside(true);
        dialog.show();
        Window window = dialog.getWindow();
        window.setContentView(R.layout.dialog_postmsg);
        LayoutParams params = window.getAttributes();
        params.width = LayoutParams.MATCH_PARENT;//如果不设置,可能部分机型出现左右有空隙,也就是产生margin的感觉
        params.height = LayoutParams.WRAP_CONTENT;
        params.softInputMode = LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE;//显示dialog的时候,就显示软键盘
        params.flags = LayoutParams.FLAG_DIM_BEHIND;//就是这个属性导致不能获取焦点,默认的是FLAG_NOT_FOCUSABLE,故名思义不能获取输入焦点,
        params.dimAmount=0.5f;//设置对话框的透明程度背景(非布局的透明度)
        window.setAttributes(params);

 

效果如下: 

 

 

 



上一篇: Linux 4.0开发统计 下一篇: 没有下一篇了!
发表评论
用户名: 匿名