实时模板在 Kotlin 中不起作用

Live Template not working in Kotlin

希望您使用过 Android 默认提供的实时模板。

喜欢:

Generate debug log statement: "logd"+TAB
Generate error log statement: "loge"+TAB
Generate info log statement: "logi"+TAB
Generate TAG declaration: "logt"+TAB
Generate parameter logging: "logm"+TAB
Generate method return log: "logr"+TAB

它在 KOTLIN 中不可用?

AndroidStudio 3.0 Canary Version中不可用吗?

尚未在 Android Studio 的 Kotlin Live 模板部分 中添加日志模板。

设置 -> 编辑器 -> 实时模板 -> Kotlin for kotlin 模板。

设置 -> 编辑器 -> 实时模板 -> AndroidLog for AndroidLog 模板

.

所以你无法在 Kotlin 代码中获得相同的 AndroidLog 模板。

所以现在问题How to use same Log Functions using templates in Kotlin?

答案: 您可以在 Kotlin 模板部分 添加相同的日志模板(Android日志模板)[=58] =] 工作室如下例。

然后它将在您的 Kotlin 代码中可用!

我希望通过这种方式,您可以利用 Kotlin 中的日志函数模板。

这是分步指南:

首先,将 AndroidLog 模板复制并粘贴到 Kotlin(只需 select 它们并使用 CMD+C、CMD+V(或 Ctrl+C、Ctrl+V )
其次,您必须手动调整它们:

  1. logd(loge、logv 和其他) Select logd 项目并按 "Edit variables"

将表达式更改为:kotlinMethodName()

此外,从模板末尾删除 ;,因为在 Kotlin 中不需要它。

现在您的方法名称将正确显示

  1. logt

这个有点棘手。
解决方案 1:TAG = class 名称。

模板文本:

private val TAG = "$className$"

编辑变量 -> 表达式:

groovyScript("_1.take(Math.min(23, _1.length()));", kotlinClassName())

方案二:TAG=文件名(可在Companion中使用)

模板文本:

private const val TAG = "$className$"

或:

companion object {
    private const val TAG = "$className$"
}

编辑变量 -> 表达式:

groovyScript("_1.take(Math.min(23, _1.length()));", fileNameWithoutExtension())

您不需要复制粘贴其他答案中提到的任何内容。在 Android Studio 的 Live Templates 部分找到 "Applicable in *" 文本 - 点击 "Change" 按钮给出所有范围的列表。选择 Kotlin(或其子节点之一)并应用。请注意,Java 中的某些语句在 Kotlin 中不起作用(例如使用 static 关键字的语句)- 最好为它们创建一个新模板,而不是编辑现有模板。

Here 是包含 Android-Kotlin 的所有模板的存储库。

您需要做的就是下载存储库,复制 templates 目录并粘贴到您的 Android Studio 配置文件夹中。

您的 Android Studio 的配置文件夹位于

Windows: C:\Users\%userName%\.AndroidStudio<version>\config\templates
Linux: ~AndroidStudio<version>/config/templates
macOS: ~/Library/Preferences/AndroidStudio<version>/templates

这是@pRaNaY @Leo 和@Jaguar 的所有好答案与奖励 无标签和变量就绪用法的组合(无需键入“${ }")

模板文本: android.util.Log.d("$className$", "$methodName$ $$$contents$")

适用于 Kotlin: top-level, statement, class, expression

变量表达式可以在下拉菜单中找到

here you can see whole picture

对于 logt 以上两个答案有效但还需要添加 "define" 作为 "class"