showKeywordDialog: function() {
if (isKeywordDialogShowing) return;
isKeywordDialogShowing = true;
threads.start(function() {
    let dialogLayout = (
        <frame>
            <card cardBackgroundColor="#f5f5f5" cardCornerRadius="8dp" cardElevation="4dp" margin="8" layout_gravity="center">
                <vertical padding="16" bg="#f5f5f5" w="300">
                    <text text="修改关键词配置" textSize="18sp" textColor="#333333" marginBottom="12" gravity="center"/>
                    
                    <text text="当前关键词:" textSize="14sp" textColor="#555555" marginTop="8"/>
                    <text id="currentKeywords" text={currentConfig.keyword.join(", ")} textSize="14sp" textColor="#2196F3" marginBottom="12"/>
                    
                    <text text="输入新关键词(用逗号分隔):" textSize="14sp" textColor="#555555" marginTop="8"/>
                    <input id="keywordsInput" text={currentConfig.keyword.join(", ")} textSize="14sp" 
                        focusable="true" focusableInTouchMode="true"/>
                    
                    <horizontal gravity="center" marginTop="20">
                        <button id="confirmBtn" text="确认" w="110" h="40" marginRight="10" bg="#4CAF50" textColor="#ffffff" elevation="2dp"/>
                        <button id="cancelBtn" text="取消" w="110" h="40" bg="#ffffff" textColor="#757575" elevation="2dp" style="Widget.AppCompat.Button.Borderless"/>
                    </horizontal>
                </vertical>
            </card>
        </frame>
    );
    
    keywordDialog = floaty.window(dialogLayout);
    positions = calculateWindowPosition();
    keywordDialog.setPosition(positions.dialog.x, positions.dialog.y);
    
    let confirmBtn = keywordDialog.findView("confirmBtn");
    let cancelBtn = keywordDialog.findView("cancelBtn");
    let keywordsInput = keywordDialog.findView("keywordsInput");
    
    // 添加输入法自动弹出逻辑
    ui.run(() => {
        keywordsInput.requestFocus();
        let imm = context.getSystemService(android.content.Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(keywordsInput, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
    });
    
    confirmBtn.click(() => {
        let input = keywordsInput.text();
        if (input) {
            currentConfig.keyword = input.split(",").map(k => k.trim()).filter(k => k);
            console.log("✅ 关键词已更新:", currentConfig.keyword.join(", "));
        }
        ui.run(() => {
            // 关闭输入法
            let imm = context.getSystemService(android.content.Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(keywordsInput.getWindowToken(), 0);
            
            try { keywordDialog.close(); } catch (e) {}
            keywordDialog = null;
            isKeywordDialogShowing = false;
        });
    });
    
    cancelBtn.click(() => {
        ui.run(() => {
            // 关闭输入法
            let imm = context.getSystemService(android.content.Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(keywordsInput.getWindowToken(), 0);
            
            try { keywordDialog.close(); } catch (e) {}
            keywordDialog = null;
            isKeywordDialogShowing = false;
        });
    });
});
},
无法弹出输入法
回答
根据你提供的代码,无法弹出输入法的原因可能有以下几点:
- 
floaty.window的限制:使用floaty.window创建的窗口可能不支持直接弹出输入法。你可以尝试使用dialogs.build()来创建对话框,而不是使用floaty.window。
- 
上下文问题:确保 context是有效的 Android 上下文对象。如果context未正确初始化,可能会导致输入法无法弹出。
- 
权限问题:确保你的脚本已经获取了必要的权限,例如 INPUT_METHOD_SERVICE。
以下是修改后的代码示例,使用 dialogs.build() 来创建对话框并弹出输入法:
showKeywordDialog: function() {
    if (isKeywordDialogShowing) return;
    isKeywordDialogShowing = true;
    threads.start(function() {
        let dialog = dialogs.build({
            title: "修改关键词配置",
            content: (
                <vertical>
                    <text text="当前关键词:" textSize="14sp" textColor="#555555" marginTop="8"/>
                    <text id="currentKeywords" text={currentConfig.keyword.join(", ")} textSize="14sp" textColor="#2196F3" marginBottom="12"/>
                    
                    <text text="输入新关键词(用逗号分隔):" textSize="14sp" textColor="#555555" marginTop="8"/>
                    <input id="keywordsInput" text={currentConfig.keyword.join(", ")} textSize="14sp" 
                        focusable="true" focusableInTouchMode="true"/>
                </vertical>
            ),
            positive: "确认",
            negative: "取消"
        }).on("positive", function(dialog) {
            let input = dialog.findView("keywordsInput").text();
            if (input) {
                currentConfig.keyword = input.split(",").map(k => k.trim()).filter(k => k);
                console.log("✅ 关键词已更新:", currentConfig.keyword.join(", "));
            }
            dialog.dismiss();
            isKeywordDialogShowing = false;
        }).on("negative", function(dialog) {
            dialog.dismiss();
            isKeywordDialogShowing = false;
        });
        dialog.show();
        // 弹出输入法
        let keywordsInput = dialog.findView("keywordsInput");
        keywordsInput.requestFocus();
        let imm = context.getSystemService(android.content.Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(keywordsInput, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT);
    });
}
说明:
- 使用 dialogs.build()创建对话框,而不是floaty.window。
- 在 positive和negative事件中处理按钮点击逻辑。
- 在对话框显示后,通过 requestFocus()和showSoftInput()弹出输入法。
如果问题仍然存在,请检查你的脚本是否正确获取了 context 对象,并确保你的环境支持输入法弹出功能。
                ℹ️ 本回答由 AI 生成,内容仅供参考