Android 视图的 Kotlin 合成 属性 差异?

Kotlin synthetic property difference for Android views?

Kotlin Android extension documentation 表示您基本上可以通过使用导入语句来执行 findViewById() 的快捷方式。但是,导入特定视图 kotlinx.android.synthetic.main.<layout-file-name>.<view-id> 和从 kotlinx.android.synthetic.main.<layout-file-name>.view.<view-id> 导入有什么区别?如果您使用前者,IDE 会向我显示三个相同的视图 ID,Activity、Dialog 和 Fragment 各一个。如果您选择后者,它只会显示一次视图 ID 名称。

IDE 提示显示了 class 类型,您可以在其中使用视图引用:Activity、片段、对话框或视图。当您键入 import 语句时,IDE 显示它适用的所有类型的完成。但是,当您尝试在 class 中使用它(没有 import 语句)时,IDE 会向您显示 class 正在扩展的特定类型的导入提示。

例如,在 activity class 中,扩展 AppCompatActivity,你会得到导入提示

<view-id> from <layout-file-name> for Activity

但是,如果您的 class 从 View 或子 class 延伸,您会得到:

<view-id> from <layout-file-name> for View

关于为什么有多个选择,不同类型的视图缓存的实现可能不同。 More on this here