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

如何让ScrollView下方的RecyclerView在视图创建时程序化获取焦点

解决RecyclerView无法获取焦点的问题

你遇到的问题是因为ScrollView默认会主动抢占焦点,且视图初始化阶段直接调用requestFocus()可能因视图未完全绘制完成而失效,以下是几个可行的解决方法:

  • 延迟请求焦点,确保视图已绘制完成
    在视图的post方法中调用requestFocus(),这样能保证RecyclerView已经完成布局,有能力获取焦点:

    recyclerView.post {
        recyclerView.requestFocus()
    }
    

    Java版本:

    recyclerView.post(new Runnable() {
        @Override
        public void run() {
            recyclerView.requestFocus();
        }
    });
    
  • 禁止ScrollView自动获取焦点
    在布局文件的ScrollView标签中添加以下属性,让它不再主动抢占焦点:

    <ScrollView
        ...
        android:focusable="false"
        android:focusableInTouchMode="false">
        <!-- 内部内容 -->
    </ScrollView>
    

    之后再调用RecyclerView的requestFocus()就能生效。

  • 强制清除ScrollView焦点后再请求
    如果前两种方法不生效,可以先清除ScrollView的焦点,再让RecyclerView请求焦点,同样要放在post方法中:

    recyclerView.post {
        scrollView.clearFocus()
        recyclerView.requestFocus()
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:28:13