软键盘弹出+popupWindow的问题

本文探讨了在Android中如何使PopupWindow随软键盘弹出而自动调整位置的方法。介绍了通过监听全局布局变化来获取可见区域高度,并据此调整PopupWindow高度的方案。同时分享了关于EditText输入类型设置的小技巧。
  1. popupWindow上有输入框,我希望在软件盘弹出的时候popupWindow可以上移,搜集了很多资料,有的说通过屏幕的大小减去Activity显示的大小,就是键盘的高度,然后动态设置popupWindow的大小,但是没有实现.因为popupWindow的大小就是屏幕的大小,所以此时Activity显示的大小就是0.
/**
 2. 获取键盘的高度,设置scrollview的大小
*/
public void setScrollViewHight() {
    ll_root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        /**
         * the result is pixels
         */
        @Override
        public void onGlobalLayout() {

            Rect r = new Rect();

            //获取可见高度
            int visiableHeight = r.bottom - r.top;
            LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) myScrool.getLayoutParams();
            //获取当前控件的布局对象
            params.height = visiableHeight;//设置当前控件布局的高度
            myScrool.setLayoutParams(params);//将设置好的布局参数应用到控件中
            ll_root.getWindowVisibleDisplayFrame(r);

            int screenHeight = ll_root.getRootView().getHeight();
            int heightDifference = screenHeight - visiableHeight;
            Log.e("可见高度是", visiableHeight + "");
            Log.e("Keyboard Size", "Size:" + heightDifference);

            //boolean visible = heightDiff > screenHeight / 3;
        }
    });
}
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

所以我使用了另一种方式,就是设置popupWindow的属性,据说这两个属性的位置不可以变,我没有测试,但是设置之后也没其效果,之后我就通过问一些大神知道了popupWindow必须被scrollview包裹才行,不然不可以弹出.

menuWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
                menuWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
 
  • 1
  • 2

也有说找到这个activity的配置文件设置这个属性android:windowSoftInputMode = “stateVisible|adjustResize”但是我的也没有效果,之后没有测试,可能是我开始没有用scrollview做顶级布局吧.如果是”adjustPan|stateHidden”则键盘弹出布局不会上移,还有其他的属性,这里就不一一例举了.

  1. EditText不能输入小数,只要把android:inputtype=”number”(整数),可以number改为numberDecimal即可,还有其他的edittext的设置可以参照以下网址进行动态设置
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值