FloatingWindow GT_AnnotationFloatingWindow EditText 无法输入内容的问题

开发的一个系统悬浮框 做一个全局的设置界面。使用了GT库 框架的 GT_FloatingWindow 子功能(mirrors / 1079374315 / GT · GitCode)。开始的时候开开心心的 很实用。后面遇到一些问题让人头疼,FloatingWindow这个子框架 不能之间使用fragment ,无法使用dialog 等等让很多本来简答的工作,变得复杂起来。

例外一个问题 ,大家如果使用这个框架的话,应该也会遇到,就是 这个window上 的EditText 无法获取到输入内容,软键盘也不能正常弹出。

我的解决方法:

继承的 initView(View view)方法中加上

ll.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; 

应该就可以了。

@Override
protected void initView(View view) {
    super.initView(view);
    WindowManager.LayoutParams ll = getLayoutParams();
    ll.gravity = Gravity.CENTER;
    ll.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
    setDrag(true);//设置可拖动
}

问题就在于 悬浮框需要 不去拦截框外的事件。所以设置WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,悬浮框外的点击才有效,会把事件分发给悬浮窗底层的其他应用Activity,但这样的话悬浮框EditText无法弹出键盘,也无法获取到外接键盘输入的内容

悬浮框内View的onToucheEvent函数好像也不能能触发,在找资料的过程中,看到说添加WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,倒是可以触发,但是无法拦截事件(具体未测试)。

而设置为 WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,屏幕上弹窗之外的地方能够点击、弹窗上的EditText也可以输入、键盘能够弹出来。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值