无法检查我的数组内部的文本视图在 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 Recycler多视图代码整理出来