m0_52253940 2021-11-08 17:22 采纳率: 100%
浏览 49
已结题

自定义悬浮窗中,如何实现用悬浮窗中的按钮拖拽悬浮窗

如下图,我做了一个包含一个按钮、一个编辑框的悬浮窗

img

现在已经实现通过摁住图中黑线下方displayview的部分,拖动整个悬浮窗

但是我想达到通过拖动按钮拖拽整个悬浮窗的效果,如果通过修改以下代码

private void showFloatingWindow() {
        if (Settings.canDrawOverlays(this)) {
            LayoutInflater inflater=LayoutInflater.from(this);
            displayView= (ViewGroup)inflater.inflate(R.layout.floating_edittext, null);
            Button btn_menu_floating=displayView.findViewById(R.id.btn_menu_floating);
            displayView.setOnTouchListener(new FloatingOnTouchListener());
            windowManager.addView(displayView, layoutParams);
        }
    }


displayView.setOnTouchListener(new FloatingOnTouchListener());
修改成
btn_menu_floating.setOnTouchListener(new FloatingOnTouchListener());

可以顺利运行程序,建立悬浮窗,但是拖动按钮就会报错
java.lang.IllegalArgumentException:Button not attached to window manager
想请教的问题有两个,一个是为什么会报错,二是如何修改可以实现通过按钮拖动整个悬浮窗的效果

  • 写回答

1条回答 默认 最新

  • 曲幽 2021-11-11 14:09
    关注

    初看感觉问题应该不大,把FloatingOnTouchListener代码贴下看下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月19日
  • 已采纳回答 11月11日
  • 创建了问题 11月8日

悬赏问题

  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接
  • ¥15 MATLAB中使用parfor,矩阵Removal的有效索引在parfor循环中受限制
  • ¥20 Win 10 LTSC 1809版本如何无损提升到20H1版本
  • ¥50 win10 LTSC 虚拟键盘不弹出
  • ¥30 微信小程序请求失败,网页能正常带锁访问
  • ¥15 Matlab求解微分方程,如何用fish2d进行预优?