1. 1.软键盘弹出时不会改变布局(覆盖页面的效果)

    android:windowSoftInputMode="adjustPan"
  1. 2、软键盘弹出时不会覆盖popuwindow
    setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
    setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
  1. 3.popuwindow显示在页面底部,弹出时被软键盘顶
    myInput.showAtLocation(findViewById(android.R.id.content),Gravity.BOTTOM,0,0);


  1.  
  1. 4.源码
     4.1popupwindow的布局(自定义)
     public class MyInput extends PopupWindow {
      private Context context; private View view;
       public MyInput(Context context){
    this.context=context;
    init();
       }public void init(){
  1.    LayoutInflater inflater=LayoutInflater.from(context);
    view =inflater.inflate(R.layout.myinput,null);
    this.setWidth(getScreenSize()[0]);
    this.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
    setBackgroundDrawable(new ColorDrawable(0x00000000));
    setOutsideTouchable(true);
    setFocusable(true);
    setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
    setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    setContentView(view);
    }
    @Override
    public void showAsDropDown(View anchor) {
    // TODO Auto-generated method stub
    super.showAsDropDown(anchor);
    showPopuWindow();
    }
    @Override
    public void showAsDropDown(View anchor, int xoff, int yoff) {
    // TODO Auto-generated method stub
    super.showAsDropDown(anchor, xoff, yoff);
    showPopuWindow();
    }
    @Override
    public void showAsDropDown(View anchor, int xoff, int yoff, int gravity) {
    // TODO Auto-generated method stub
    super.showAsDropDown(anchor, xoff, yoff, gravity);
    showPopuWindow();
    }
    @Override
    public void showAtLocation(View parent, int gravity, int x, int y) {
    // TODO Auto-generated method stub
    super.showAtLocation(parent, gravity, x, y);
    showPopuWindow();
    }
    private void showPopuWindow(){
    setWindowBackgroundAlpha(0.8f);
    if (mShowingListener!=null) {
    mShowingListener.onShowing();
    }
    }
    @Override
    public void setOnDismissListener(OnDismissListener onDismissListener) {
    setWindowBackgroundAlpha(1f);
    super.setOnDismissListener(onDismissListener);
    }
    /**
    * 控制窗口背景的不透明度 *
    */
    private void setWindowBackgroundAlpha(float alpha) {
    Window window = ((Activity) context).getWindow();
    WindowManager.LayoutParams layoutParams = window.getAttributes();
    layoutParams.alpha = alpha;
    window.setAttributes(layoutParams);
    }
    public interface ShowingListener {
    public void onShowing();
    }
    private MyInput.ShowingListener mShowingListener;
    public void setShowingListener(MyInput.ShowingListener showingListener) {
    this.mShowingListener = showingListener;
    }
    /*
    * 获取屏幕的宽高
    */
    public int[] getScreenSize(){
    int[] size=new int[2];
    DisplayMetrics dm=new DisplayMetrics();
    WindowManager wm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
    wm.getDefaultDisplay().getMetrics(dm);
    size[0]=dm.widthPixels;
    size[1]=dm.heightPixels;
    return size;
    }
    }

        

    4.2activity里面的动态写popupwindow
    shipin_pinglun.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    //dibu.setVisibility(dibu.GONE);
  1. if (myInput==null){
    myInput=new MyInput(SurfaceViewActivity.this);

    myInput.setShowingListener(new MyInput.ShowingListener() {
    @Override
    public void onShowing() {
    }
    });
    myInput.setOnDismissListener(new PopupWindow.OnDismissListener() {
    @Override
    public void onDismiss() {
    WindowManager.LayoutParams lp=getWindow().getAttributes();
    lp.alpha = 1f;
    getWindow().setAttributes(lp);
    dibu.setVisibility(dibu.VISIBLE);
    }
    });
    }
    myInput.showAtLocation(findViewById(android.R.id.content),Gravity.BOTTOM,0,0);
    }
    });


popupwindow与软键盘的问题的更多相关文章

  1. 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题

    如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 在android中有时候可能要实现一个底部弹 ...

  2. popupwindow中EditText获取焦点后自动弹出软键盘

    关于popupwindow中EditText获取焦点后自动弹出软键盘的问题,玩过手机qq或空间的童鞋应该知道,再点击评论时会弹出一个编辑框,并且伴随软键盘一起弹出是不是很方便啊,下面我们就来讲一下实现 ...

  3. Android PopupWindow中EditText获取焦点自动弹出软键盘

    公司的项目中要求在点击搜索的时候弹出一个搜索框,搜索框中有一个EditText,用于数据搜索关键字,要求在弹出PopupWindow的时候自动弹出软键盘,原以为只要写上着两行代码可以搞的问题: Inp ...

  4. (转载)PopuWindow和软键盘共存时的设置

    PopuWindow和软键盘共存时的设置 收藏 artshell 发表于 2年前 阅读 1499 收藏 10 点赞 2 评论 0 腾讯云上实验室 1小时搭建人工智能应用 让技术更容易入门>> ...

  5. Android中点击隐藏软键盘最佳方法——Android开发之路4

    Android中点击隐藏软键盘最佳方法 实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏: 1.重写dispatchTouchEve ...

  6. Android之弹出/隐藏系统软键盘

    Android弹出/隐藏系统软键盘的代码如下: InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT ...

  7. EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听

    软键盘显示和隐藏的监听: 注: mReplayRelativeLayout是EditText的父布局 //监听软键盘是否显示或隐藏 mReplayRelativeLayout.getViewTreeO ...

  8. Android -- 软键盘

    1. 应用启动后,自动打开软键盘 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD ...

  9. form表单提交和ajax表单提交,关于移动端如何通过软键盘上的【搜索】和【前进】进行提交操作

    [文章来源]由于自己对于form研究甚少,所以一直用的都是AJAX进行提交,这次后台提出要用form提交,顺便深入研究一下:之前在做表单的时候,发现input可以通过设置不同的type属性,调用不同的 ...

随机推荐

  1. [转]jQuery Popup Login and Contact Form

    本文转自:http://www.formget.com/jquery-popup-form/ Pop up forms are the smart way to present your site. ...

  2. Doctype文档类型、作用及触发方式

    Doctype文档类型 1)  该标签可声明三种 DTD 类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 2)  HTML 4.01 规定了三种文档类型:Strict.Transit ...

  3. UI设计实战篇——利用Bootstrap框架制作查询页面的界面

    Bootstrap框架是一个前端UI设计的框架,它提供了统一的UI界面,简化了设计界面UI的过程(缺点是定制了界面,调整的余地不是太大).尤其是现在的响应时布局(我的理解是页面根据不同的分辨率,采用不 ...

  4. jmeter的使用(一)

    1.下载jmeter:http://jmeter.apache.org/download_jmeter.cgi 2.启动jmeter,打开jmeter.bat 3.添加线程组 4.添加http请求 5 ...

  5. web前端笔试题总结

    em和rem的区别: 浏览器的默认字体高度是16px,1em=16px:大小可以自己设置调整,并且默认集成父级容器中文本的大小. rem是CSS3中新增的属性,默认情况下是文本尺寸的大小,不同的是它集 ...

  6. Blend Tree Type

    1D 只有一个参数,用于控制状态之间的切换 2D Simple Directional 2D Simple Directional   :具有方向性的动画片段,同一方向上最好不要有多个动画片段 2D ...

  7. 反序列化存入数据库里面的session数据

    session数据存取的方法可通过session.serialize_handler方法来判断,反序列化可通过下面的unserialize方法,参考http://stackoverflow.com/q ...

  8. (转)轻量级JS焦点图/轮换图myFocus V2源码下载及安装教程

    myFocus是一个专注于焦点图/轮换图制作的JS库,它小巧而且是完全独立的JS库,用它可以轻松的制作出网上绝大部分常见的焦点图(甚至包括flash焦点图),而且制作出的焦点图体积也非常的小(1KB左 ...

  9. React Native iOS环境搭建

    前段时间React Native for Android发布,感觉React Native会越来越多的公司开始研究.使用.所以周六也抽空搭建了iOS的开发环境,以便以后利用空闲的时间能够学习一下. 废 ...

  10. Rdlc报表出现空白页解决方法(转)

    在使用RDLC报表时,碰到这种情况:当只有一页数据时,报表确显示两页,第二页除了报表头之外数据为空.然后,当有多页数据时,最后一页为空. 这个问题很奇怪,网上有很多解决方案,以下的方法可以解决此问题. ...