【问题标题】:Any way to change names for auto-created views by kotlin-extensions?有什么方法可以通过 kotlin-extensions 更改自动创建的视图的名称?
【发布时间】:2018-11-11 05:31:38
【问题描述】:

我是 Kotlin 的新手。我红色https://kotlinlang.org/docs/tutorials/android-plugin.html 并注意到视图可以通过导入自动绑定到活动 kotlinx.android.synthetic.main.activity_main.*.

如果我在 Activity 中使用 id = "btn_login" 声明视图,我可以通过

activity.btn_login.setText("Login")

但是。有没有办法改变别名来查看,比如 ButterKnife 做的:

@BindView(<id of view>)
<name of view>

【问题讨论】:

    标签: android kotlin kotlin-android-extensions


    【解决方案1】:

    这是一个合成导入,所以从技术上讲,您可以使用导入别名来用另一个名称来调用它:

    import kotlinx.android.synthetic.main.activity_main.view.btn_login as btnLogin
    

    但考虑到没有工具可以自动执行此操作,您可能只想采用不同的 ID 命名方案。

    这是一个合理的:

    What-Where-Description-Modifier:

    recyclerSearchSuggestions - RecyclerView 显示搜索建议

    fabSearchGo - 执行搜索的 FloatingActionButton

    textSearchFilterChip - TextView 表示搜索过滤器,样式为材料芯片

    buttonSearchClearFilter - 清除所选过滤芯片的按钮

    editSearchFilter - EditText 用于缩小搜索建议的范围

    【讨论】:

      【解决方案2】:

      据我所知,唯一可行的方法是使用命名导入。这是 Kotlin 语言的一个非常好的特性,Java 不支持。不幸的是,这需要为您想要替换的人手动设置它,因此它可能有点样板。

      但您可以将导入更改为:

      import kotlinx.android...your_view as yourView
      

      这适用于任何和所有导入,也适用于任何类型。它可以用类、方法、常量来完成……随便你怎么想。

      虽然如果您可以访问 XML 文件,我建议您只需更改其中的 ID。无论如何都没有理由不使用 camelCase,而且它比在每次导入时使用 as customName 稍微容易一些。

      【讨论】:

      • 事情是,有时我想对当前活动使用类似于“本地”的 id。如果我在 XML 中使用这个本地 ID,它可能会与其他布局中的其他 ID 发生冲突。在这种情况下,有这样的选择会很棒。
      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 2012-07-08
      • 2021-08-02
      • 2019-02-06
      相关资源
      最近更新 更多