首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Kotlin中切换可见性,isVisible未解析引用

在Kotlin中切换可见性,isVisible未解析引用
EN

Stack Overflow用户
提问于 2019-06-05 15:44:58
回答 4查看 6K关注 0票数 7

慢慢地学习Kotlin。只是从滚筒中生成一个随机数。如果roll =9,我想使按钮和查找条不可见。

我正在使用toggleVisibility函数来完成这个任务,但是Kotlin编译器将isVisible视为一个未解决的引用

代码语言:javascript
运行
复制
package com.example.randomizer

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.SeekBar
import android.widget.TextView
import android.widget.VideoView
import java.util.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val rollButton = findViewById<Button>(R.id.rollButton)
        val resultsTextView = findViewById<TextView>(R.id.resultsTextView)
        val seekBar = findViewById<SeekBar>(R.id.seekBar)
        val winText = "9 You Win !"




        rollButton.setOnClickListener {
            val rand = Random().nextInt(seekBar.progress)
            resultsTextView.text = rand.toString()
            if (rand == 9) {
                resultsTextView.text = winText
                seekBar.toggleVisibility()
                rollButton.toggleVisibility()
            }

        }



    }

    fun View.toggleVisibility() {
        if (this.isVisible()) {
            this.visibility = View.INVISIBLE
        } else {
            this.visibility = View.VISIBLE
        }
    }
}

编译器错误:

代码语言:javascript
运行
复制
unresolved reference isVisible
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-06-05 15:50:03

您自己为视图定义了isVisible吗?

视图类没有称为isVisible()的方法。

正如@ said 2340612所述,它可以定义为:

代码语言:javascript
运行
复制
fun View.isVisible(): Boolean {
    return this.visibility == View.VISIBLE
}
票数 2
EN

Stack Overflow用户

发布于 2019-06-05 16:15:02

正如上面提到的,您可以自己指定isVisible()作为扩展函数。

代码语言:javascript
运行
复制
fun View.isVisible() = this.visibility == View.Visible

或者您可以添加KTX视图依赖项并开始使用其中的一些方法。我建议您看一下:https://developer.android.com/reference/kotlin/androidx/core/view/package-summary#(android.view.View).isVisible:kotlin.Boolean

导入并开始使用KTX添加到build.gradle中的依赖项

代码语言:javascript
运行
复制
implementation "androidx.core:core-ktx:1.0.2"

KTX是一组常用的Kotlin扩展。也可以查看:https://developer.android.com/kotlin/ktx

票数 12
EN

Stack Overflow用户

发布于 2019-06-05 15:53:23

isVisible()中没有View方法。

您可以像这样定义扩展方法:

代码语言:javascript
运行
复制
fun View.toggleVisibility() {
    this.visibility = if (this.visibility == View.VISIBLE) View.INVISIBLE else View.VISIBLE
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56463883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档