You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android TV Leanback下按遥控器返回键优先隐藏软键盘的实现问题

解决方案

核心思路是在Activity分发按键事件时优先拦截返回键,判断软键盘处于显示状态时优先隐藏软键盘,不传递事件给下层控件;软键盘隐藏后再按返回键才走默认返回逻辑。

操作步骤

  1. 在SearchActivity中新增软键盘状态判断和隐藏工具方法
  2. 重写按键分发方法拦截返回键事件

完整修改后的代码

SearchActivity 代码

public class SearchActivity extends LeanbackActivity {
    private SearchFragment mFragment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        mFragment = (SearchFragment) getSupportFragmentManager()
                .findFragmentById(R.id.search_fragment);
    }

    @Override
    public boolean onSearchRequested() {
        mFragment.startRecognition();
        return true;
    }

    // 新增:判断软键盘是否正在显示
    private boolean isSoftInputShowing() {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        // 输入法正在接收文本输入时即为显示状态
        return imm.isAcceptingText();
    }

    // 新增:隐藏软键盘
    private void hideSoftInput() {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        View focusView = getCurrentFocus();
        if (focusView != null) {
            imm.hideSoftInputFromWindow(focusView.getWindowToken(), 0);
        }
    }

    // 重写按键分发逻辑,优先处理返回键
    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        // 拦截返回键按下事件
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            if (isSoftInputShowing()) {
                hideSoftInput();
                // 消费本次事件,不再向下传递给Fragment或列表控件
                return true;
            }
        }
        // 其他情况走默认逻辑
        return super.dispatchKeyEvent(event);
    }
}

原理解释

Leanback的SearchSupportFragment在搜索结果有可展示条目时,焦点会自动落到结果列表控件上,此时返回键事件会优先被列表控件消费,直接触发页面回退逻辑,不会处理软键盘隐藏。我们在Activity层级优先拦截返回键事件,判断软键盘显示时优先隐藏,就可以统一实现不管有没有搜索结果,第一次按返回都先收键盘,第二次按返回再退出的效果。


内容的提问来源于stack exchange,提问作者sadat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:54:02