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

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



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(){
   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);
        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. 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列

    一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...

  2. java 13-6 Char的包装类Character

    1.Character 类在对象中包装一个基本类型 char 的值 此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然 构造方法: Characte ...

  3. View (二) 自定义属性

    主要有三种方法可以实现自定义属性. 方法一:不使用命名空间,不使用attrs.xml文件.通过attrs.getAttributeResourceValue方法拿到属性值 方法二: 使用命名空间, 不 ...

  4. 时间与NSString转换

    //传进来时间字符串转换 + (NSString *) getChatTimeString:(NSString *)timeString { if (timeString==nil || timeSt ...

  5. win7系统电脑连接小米蓝牙音箱

    一.买好蓝牙适配器,插到电脑上. 二.右下角工具栏找到蓝牙图标 三.右键这个图标,选择'显示Bluetooth设备' 四.找到小米蓝牙音箱 'NDZ-030-AA' 五.双击打开它,然后选择'服务'选 ...

  6. angular常见坑洞

    由于版本不同,可能有些问题在某些版本下出现,某些版本下不出现. 指令不可平行(v1.3.2): 多个指令不能这样一个接着一个排下去: <div> <directive-one/> ...

  7. shell+curl监控网站页面(域名访问状态),并利用sedemail发送邮件

    应领导要求,对公司几个主要站点的域名访问情况进行监控.下面分享一个监控脚本,并利用sendemail进行邮件发送. 监控脚本如下:下面是写了一个多线程的网站状态检测脚本,直接从文件中读出站点地址,然后 ...

  8. c# 调用打印机

    1.本地打印机 //添加引用并using System.Management; public static void AvailablePrinters() { ManagementScope ms ...

  9. nodejs 针对 mysql 设计的原型库,支持事务/共享多次/单次查询

    //通过this访问内置流程对象, 在每个流程中都能使用 //this.conn => mysql-connection //this.results => 整个流程数已经返回的值 //t ...

  10. LeetCode:Gray Code(格雷码)

    题目链接 The gray code is a binary numeral system where two successive values differ in only one bit. Gi ...