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