如何在Android中注释我的方法以返回Visibility类型int?

Nil*_*zor 11 android

当我返回一个常规的int并尝试将该int用作Visibility-annotated int的输入参数时,Android studio会抱怨.如何对我的方法进行注释,以便AS不会产生此警告?我看到View有一个公共@interface"可见性",但由于一些奇怪的原因,android.view.View.Visibility即使它是公开的,我也无法从我的项目中引用.为什么?

我的方法:

public static int booleanToVisibleOrInvisible(boolean visible) {
    return visible ? View.VISIBLE :  View.INVISIBLE;
}
Run Code Online (Sandbox Code Playgroud)

我需要的:

@android.view.View.Visibility  // <- does not compile
public static int booleanToVisibleOrInvisible(boolean visible) {
    return visible ? View.VISIBLE :  View.INVISIBLE;
}
Run Code Online (Sandbox Code Playgroud)

aga*_*aga 22

但由于一些奇怪的原因,我不能从我的项目中引用android.view.View.Visibility,即使它是公开的.

看一下源代码,你会看到这个注释是用@hide标签'注释'的:

/** @hide */
@IntDef({VISIBLE, INVISIBLE, GONE})
@Retention(RetentionPolicy.SOURCE)
public @interface Visibility {}
Run Code Online (Sandbox Code Playgroud)

@hidetag用于从android.jar文件中排除带注释的包/类/方法/ etc,因此在编译时它不可用.我怀疑你可以在你的代码中以某种方式使用相同的注释,除非谷歌工程师@hide从源代码中删除标签.
您可以通过//noinspection ResourceType评论来抑制此警告.

  • 哇...谷歌模糊了代码和注释之间的界限。感谢您的提醒。PS:我必须编写`@SuppressWarnings("ResourceType")`才能使其工作。PPS:啊,另一个是内联的。 (2认同)
  • 为什么该注释甚至被隐藏? (2认同)