android - 关注结果后 Leanback Search fragment 关闭

标签 android leanback

在 Leanback 搜索 fragment 中,当我们使用键盘提交搜索并获得搜索结果时,当使用后退按钮提交搜索查询时, fragment 将关闭。我们可以看到,在按下后退按钮时,结果会获得焦点并且键盘会隐藏(如预期的那样),但在按下后退按钮时,屏幕会关闭。

我认为这是 Leanback 框架中的一个错误,因为它正在 Leanback 展示中重现。

我也发布了一个问题 https://github.com/googlesamples/leanback-showcase/issues/58

是否有禁用屏幕关闭的解决方法?

最佳答案

我找到了错误的来源。 在 SearchSupportFragment 中有一个 searchBarListener,它在 onKeyboardDismiss 中将焦点放在结果上,但这在 dispatchKeyEvent 之前调用,当处理后退按钮时,结果已经聚焦并且屏幕正在关闭。

在 Leanback 团队修复它之前,我已经找到了一个 hacky 解决方案。在 onViewCreated 中,我设置了自己的 searchBarListener 并且延迟了焦点更改

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    //this is overriding the default searchResultProvider, because of a bug in it
    view.findViewById<SearchBar>(R.id.lb_search_bar).setSearchBarListener(object : SearchBar.SearchBarListener {
        override fun onSearchQueryChange(query: String?) {
            onQueryTextChange(query)
        }

        override fun onSearchQuerySubmit(query: String?) {
            onQueryTextSubmit(query)
        }

        override fun onKeyboardDismiss(query: String?) {
            searchHandler.postDelayed({ focusOnResults() }, 200)
        }
    })
}

关于android - 关注结果后 Leanback Search fragment 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50268110/

相关文章:

Android TV Leanback RowsFragment 在开始时保持焦点项目

android - 如何在 Android TV 中编写自定义 Leanbacks VerticalGridView?

android - 如何减慢按下按钮时 Android GridView 的滚动速度? (往后靠)

android - GuidedStepFragment 是用于 Android Mobile 还是仅用于 Android TV?

java - Replace 或 ReplaceAll 函数不会删除换行符

java - 从另一个类访问变量时出错

android - 移除 readonly 属性并更改类型并在单个事件中关注相同的输入字段

php - Android与mysql数据库的连接

android - CollapsingToolbarLayout 标题作为共享元素过渡

android - 通过保持对中心元素的关注来滚动 VerticalGridView 或 RecyclerView