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

Kotlin中代码关闭动态创建的scrollView不生效如何解决

问题原因

你遇到的问题主要有两处核心错误:

  • 逻辑结构错误:所有业务代码都包在了if (linearLayout == null)的判断中,只有第一次调用方法、linearLayout还未初始化的时候才会执行内部代码。如果之前已经调用过showSpinner(true)完成了初始化,之后再调用showSpinner(false)时,整个判断块会直接跳过,关闭逻辑根本不会执行。
  • 语法&API使用错误:linearLayout!!.visibility == null这行存在两个问题:
    1. 双等号==是比较运算符,不能用来赋值,赋值需要用单等号=
    2. Android View的visibility属性不接受null值,可选值只有三个:
    • View.VISIBLE:控件可见
    • View.INVISIBLE:控件不可见,但仍占用原有布局空间
    • View.GONE:控件不可见,且不占用原有布局空间
修复后的代码
/***************** SCROLL VIEW *****************/
fun showSpinner(show: Boolean) {
    // 优先完成初始化操作,不要和业务逻辑绑定
    if (linearLayout == null) {
        linearLayout = findViewById(R.id.linear1)
    }
    // 单独处理显示/隐藏逻辑
    if (show) {
        val layoutInflater = LayoutInflater.from(this)
        // 原有填充布局的逻辑保留即可
        ...
        linearLayout?.visibility = View.VISIBLE
    } else {
        // 隐藏滚动视图,GONE符合“关闭”的需求,不会占用原有布局空间
        linearLayout?.visibility = View.GONE
    }
}
额外注意
  • 如果你要完全关闭整个滚动区域,不是只隐藏内部的LinearLayout,也可以直接给外层的HorizontalScrollView或者id为myScrollView的RelativeLayout设置visibility为View.GONE,效果和隐藏内部布局一致,根据你的业务需求选择即可。
  • 代码中尽量用安全调用符?.代替!!空断言,避免出现空指针异常导致应用崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:18:04