Kotlin针对Android视图的综合属性差异?

Kotlin的Android扩展文档说,你基本上可以使用import语句做一个findViewById()的快捷方式。 然而,导入一个特定的视图kotlinx.android.synthetic.main.<layout-file-name>.<view-id>和从kotlinx.android.synthetic.main.<layout-file-name>.view.<view-id>导入kotlinx.android.synthetic.main.<layout-file-name>.view.<view-id> ? 如果你使用前者,IDE会显示三个相同的视图ID,Activity,Dialog和Fragment各一个。 如果你做了后者,它只显示一次的视图ID名称。

IDE提示显示您可以使用视图参考的类类型:活动,片段,对话框或视图。 当您键入导入语句时,IDE会显示所有可用类型的完成情况。 但是,当您尝试在类中使用它(不包含import语句)时,IDE将显示您的类正在扩展的特定类型的导入提示。

例如,在一个活动类中,扩展AppCompatActivity ,你会得到导入提示

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

但是,如果你的类从View或子类扩展,你会得到这个:

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

关于为什么有多种选择,视图缓存的实现可能会因不同的类型而有所不同。 更多关于这里