【问题标题】:Android kotlin butterknife view visibilityAndroid kotlin butterknife 视图可见性
【发布时间】:2018-09-25 09:56:50
【问题描述】:

我试图在 android 中使用 ButterKnife 和 Kotlin 设置视图的可见性

我在黄油刀中得到了 id,例如:

@BindView(R.id.progress)
lateinit var progress: ProgressBar

可见性可以在 Java 中设置如下:(我们知道)

progress.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);

我试过了:progress.visibility to .... ?

在 kotlin 中与 ButterKnife 的关系如何?

【问题讨论】:

  • “我试过:progress.visibility to .... ?”。你尝试了什么?你试过progress.visibility =View.GONE
  • @Raghunandan 可能是 progress.visibility= View.GONE
  • 你为什么用 ButterKnife 用 kotlin 合成代替。教程在这里:antonioleiva.com/kotlin-android-extensions
  • @Raghunandan 是的,我也试过了,但没用

标签: android kotlin visibility


【解决方案1】:

试试

progress.visibility= View.VISIBLE 
progress.visibility= View.GONE 

注意

你应该使用kotlinx.android.synthetic

每个 Android 开发人员都非常了解 findViewById() 函数。它是, 毫无疑问,这是潜在错误和讨厌代码的来源 难以阅读和支持。虽然有几个库可用 为这个问题提供解决方案,这些库需要 为每个公开的视图注释字段。

Kotlin Android Extensions 插件允许我们获得相同的 我们对其中一些库的经验,无需添加 任何额外的代码。

示例

import kotlinx.android.synthetic.main.activity_main.*

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

            // Instead of findViewById<ProgressBar>(R.id.progress)
             progress.visibility= View.GONE 
        }
    }

【讨论】:

  • 我试过progress.visibility= View.VISIBLE但没用,是否必须使用kotlinx.android.synthetic
  • 谢谢,我不知道为什么之前没有工作,我刚刚重新启动了我的工作室progress.visibility = View.VISIBLE 让它工作了。
【解决方案2】:

您可以在 Kotlin 中使用相同的设置器:

progress.setVisibility(View.VISIBLE)

您也可以改用属性访问语法,其作用完全相同:

progress.visibility = View.VISIBLE

至于你问题的最后一部分,如果你想写这个:

progress.visibility to View.VISIBLE

然后所做的就是创建一个从未使用过的Pair,它只是被丢弃了——它相当于:

Pair(progress.visibility, View.VISIBLE)

【讨论】:

  • 如我所说,我尝试了progress.setVisibility(View.VISIBLE) 但没有成功,是否必须使用kotlinx.android.synthetic
  • Thanx,我不知道为什么它以前不起作用,我刚刚重新启动了我的工作室progress.visibility = View.VISIBLE 使它起作用了。
  • 绝对不是强制使用 Kotlin Android Extensions 插件。这只是可用选项之一(要查看其他选项,请参阅this question)。如果你习惯使用 ButterKnife,你绝对可以继续使用 Kotlin。
猜你喜欢
  • 2018-03-10
  • 1970-01-01
  • 2021-08-03
  • 2015-02-25
  • 2023-03-05
  • 2016-04-19
  • 2016-09-18
  • 2022-01-17
  • 1970-01-01
相关资源
最近更新 更多