gpt4 book ai didi

android - 如何在 IntelliJIdea 插件开发中仅向 Android 中的 Strings.xml 文件添加操作

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:18 26 4
gpt4 key购买 nike

我创建了一个 IntelliJIdea 插件,使用 plugin.xml 中的 Action 条目,例如

  <actions>
<!-- Add your actions here -->
<group id="AL.Localize" text="_Localize" description="Localize strings" >
<add-to-group group-id="ProjectViewPopupMenu"/>

<action id="AL.Convert" class="action.ConvertToOtherLanguages" text="Convert to other languages"
description="Convert this strings.xml to other languages that can be used to localize your Android app.">

</action>
</group>
</actions>

使用此设置,我的操作将在用户右键单击文件后出现。像这样: right-click popup menu

问题是 Convert to other languages 菜单一直显示,我只想在用户右键单击 string.xml 文件时显示此菜单,就像 Open Translation Editor(Preview) 菜单一样。 (Open Translation Editor(Preview) 是 Android Studio 在 version 0.8.7 中引入的一项功能)

我该怎么办?

最佳答案

不确定是否有一种方法可以完全在 XML 中执行此操作,所以如果您知道其他人可以随意加入,但有一种方法可以在 Java 中执行此操作。

在 Action 的更新方法中,您可以使用 Action 的 Presentation 对象根据文件名设置 Action 是否可见。下面是一个基于 Android Studio 中的 ConvertToNinePatchAction 的示例:

package com.example.plugin;

import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.vfs.VirtualFile;

import org.jetbrains.annotations.Nullable;

public class ConvertToOtherLanguages extends AnAction {

public ConvertToOtherLanguages() {
super("Convert to other languages");
}

@Override
public void update(AnActionEvent e) {
final VirtualFile file = CommonDataKeys.VIRTUAL_FILE.getData(e.getDataContext());
final boolean isStringsXML = isStringsFile(file);
e.getPresentation().setEnabled(isStringsXML);
e.getPresentation().setVisible(isStringsXML);
}

@Contract("null -> false")
private static boolean isStringsFile(@Nullable VirtualFile file) {
return file != null && file.getName().equals("string.xml");
}

@Override
public void actionPerformed(AnActionEvent e) {
// Do your action here
}
}

然后在 XML 中,您的操作将如下所示:

<action id="AL.Convert" class="com.example.plugin.ConvertToOtherLanguages">
<add-to-group group-id="ProjectViewPopupMenu" anchor="last" />
</action>

关于android - 如何在 IntelliJIdea 插件开发中仅向 Android 中的 Strings.xml 文件添加操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com