zoukankan      html  css  js  c++  java
  • AlertDialog中EditText不能获取焦点以及不宽度不能自动铺满的完美解决方案


    问题分析:

    因为 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);

    效果如下: 



  • 相关阅读:
    设计模式之-简单工厂模式
    C# 汉语转拼音
    深入理解DIP、IoC、DI以及IoC容器
    C# 各种帮助类大全
    C# TCP多线程服务器示例
    【AtCoder】AGC004
    【AtCoder】ARC061
    【AtCoder】CODE FESTIVAL 2016 qual A
    【AtCoder】AGC005
    【AtCoder】CODE FESTIVAL 2016 qual B
  • 原文地址:https://www.cnblogs.com/justkeepmoving/p/4424136.html
Copyright © 2011-2022 走看看