无法检查我的数组内部的文本视图在 Kotlin 中是不是可见

Posted

技术标签:

【中文标题】无法检查我的数组内部的文本视图在 Kotlin 中是不是可见【英文标题】:Cant check if my textview that inside of an array is visible or not in Kotlin无法检查我的数组内部的文本视图在 Kotlin 中是否可见 【发布时间】:2021-01-20 02:17:36 【问题描述】:

我有一个名为 Board 的 Textview 的二维数组(矩阵)。 Board 中有 16 个 Textview,其中只有一个是不可见的。在给定的代码行中,我试图在所有其他代码中找到不可见的代码行。出于某种原因,带有 If 条件的行每次都会折叠我的应用程序。我不明白我的问题是什么,有人可以帮助我吗? 附:对不起,我的英语不是我的母语。

这是我的代码:

var i = 0
for (i in 0..4) 
    var j = 0
    for (j in 0..4) 
        var tvtemp = board[i][j]
        if (tvtemp.visibility == View.INVISIBLE) 
            Toast.makeText(applicationContext,board[i][j].text, Toast.LENGTH_SHORT).show()
        
    

【问题讨论】:

您能否发布应用崩溃时打印的日志? 天哪,谢谢你,我忘了做,它很有帮助!我愚蠢地让循环在 0 到 4 之间,而我的数组是 0 到 3。谢谢! 【参考方案1】:

== 运算符用于比较两个变量的数据。 请不要误解这个相等运算符与 Java == 运算符,因为两者是不同的。 Kotlin 中的 == 运算符只比较数据或变量,而在 Java 或其他语言中 == 通常用于比较引用。

解决方案:

if(!tvtemp.isVisible)
....

【讨论】:

还是不行。视图类没有称为 isVisible() 的方法,当我尝试创建自己的 isVisible 函数时:fun View.isVisible(): Boolean return this.visibility == View.VISIBLE 它也不起作用 isVisible 不是方法,它是 View.kt 中定义的扩展变量。如果您将 textview 的可见性设置为不可见,请尝试 tvtemp.isInvisible。【参考方案2】:

您可以尝试使用 isShown 方法。它确定视图是否对用户可见。如果视图的可见性设置为可见,但它越过了屏幕,则 isShown 将等于 false。如果您没有滚动视图并且所有视图都安装在活动中,那么这可能对您有用

if (!tvtemp.isShown) 
            Toast.makeText(applicationContext,board[i][j].text, Toast.LENGTH_SHORT).show()
        

【讨论】:

也不起作用。看起来无论我使用哪种可见性功能,它都会崩溃。 你能把崩溃的日志贴出来让我们看看错误是什么吗?

以上是关于无法检查我的数组内部的文本视图在 Kotlin 中是不是可见的主要内容,如果未能解决你的问题,请参考以下文章

kotlin函数重载为android

Kotlin 中内部可见性修饰符的范围

Kotlin入门(24)如何自定义视图

我似乎无法将我的Kotlin Recycler多视图代码整理出来

在 Android 视图模型中的内部网络更改回调时 LiveData 未触发 - Kotlin

更改数组后无法在 Tableview 中重新加载数据?