// 创建对话框窗口
configDialog = floaty.window(dialogLayout);
// 使用计算后的位置
positions = calculateWindowPosition(); // 刷新位置计算
configDialog.setPosition(positions.dialog.x, positions.dialog.y);
        // 获取控件引用
        let confirmBtn = configDialog.findView("confirmBtn");
        let cancelBtn = configDialog.findView("cancelBtn");
        let changetimeSeekbar = configDialog.findView("changetimeSeekbar");
        let tijiaotimeSeekbar = configDialog.findView("tijiaotimeSeekbar");
					let tijiaotimeValue = configDialog.findView("tijiaotimeValue");
        let changetimeValue = configDialog.findView("changetimeValue");
					let keywordInput = configDialog.findView("keywordInput");
         
        
        // 初始化UI
        ui.run(() => {
            changetimeSeekbar.setProgress(currentConfig.changetime);
            tijiaotimeSeekbar.setProgress(currentConfig.tijiaotime);
							 keywordInput.setFocusable(true);
        keywordInput.setFocusableInTouchMode(true);
            // 设置滑动条监听
            changetimeSeekbar.setOnSeekBarChangeListener({
                onProgressChanged: (seekBar, progress, fromUser) => {
                    progress = Math.max(5, progress);
                    changetimeValue.setText(progress + "ms");
                }
            });
            
            tijiaotimeSeekbar.setOnSeekBarChangeListener({
                onProgressChanged: (seekBar, progress, fromUser) => {
                    progress = Math.max(5, progress);
                    tijiaotimeValue.setText(progress + "ms");
                }
            });
keywordInput.on("click", () => {
ui.run(() => {
try {
keywordInput.requestFocus();
        // 使用 View.postDelayed 延迟执行(兼容性更好)
        keywordInput.postDelayed(() => {
            try {
                let imm = context.getSystemService(android.content.Context.INPUT_METHOD_SERVICE);
                imm.showSoftInput(keywordInput, 0);
            } catch (e) {
                console.error("延迟弹出键盘失败:", e);
            }
        }, 100);
    } catch (e) {
        console.error("弹出键盘失败:", e);
        toast("请手动点击输入框输入");
    }
});
});
});
输入框无法弹出
回答
在Hamibot中使用floaty.window创建的悬浮窗默认可能无法直接弹出软键盘,需确保以下几点:
- 
XML布局配置 
 确保输入框的XML定义包含正确属性:<EditText android:id="@+id/keywordInput" android:layout_width="match_parent" android:layout_height="wrap_content" android:focusable="true" android:focusableInTouchMode="true" android:inputType="text"/>
- 
代码逻辑优化 
 修改点击事件处理逻辑,直接调用系统输入法:keywordInput.on("click", () => { ui.run(() => { try { keywordInput.requestFocus(); let imm = context.getSystemService(android.content.Context.INPUT_METHOD_SERVICE); imm.showSoftInput(keywordInput, 0); } catch (e) { console.error("弹出键盘失败:", e); toast("请手动点击输入框输入"); } }); });
- 
悬浮窗权限检查 
 确保脚本已申请并启用以下权限:- FLOATY_PERMISSION(悬浮窗权限)
- WRITE_SECURE_SETTINGS(部分设备需此权限)
 
- 
替代方案尝试 
 若仍无效,改用floaty.rawWindow创建原始悬浮窗:var rawWindow = floaty.rawWindow( <frame> <edittext id="keywordInput"/> </frame> );
如果问题持续,可能是系统限制导致悬浮窗无法触发输入法,建议通过floaty.rawWindow结合InputMethodManager的底层调用尝试,或参考文档中floaty模块的完整示例。
                ℹ️ 本回答由 AI 生成,内容仅供参考