BindingAdapter 设置布局全屏

BindingAdapter to set a layout fullscreen

我正在尝试在 java 中复制以下用 Kotlin 编写的代码。它实际上按照一些逻辑设置全屏布局,特别是绑定发生在元素 CoordinatorLayoutapp:layoutFullscreen="@{true}".

@BindingAdapter("layoutFullscreen")
fun View.bindLayoutFullscreen(previousFullscreen: Boolean, fullscreen: Boolean) {
    if (previousFullscreen != fullscreen && fullscreen) {
        systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    }
}

我试图将所有内容都变成 java 但我遇到了各种错误

@BindingAdapter("layoutFullscreen")
public static void bindLayoutFullscreen(Boolean previousFullscreen, Boolean fullscreen) {
    if (previousFullscreen != fullscreen && fullscreen) {
        View.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
        View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    }
}

如何获得与 java 中的 kotlin 代码相同的功能?

提前致谢, 贾科莫

注意:

  • Kotlin 扩展函数作为第一个参数提供给 java,因此这里的 view 是第一个参数。
  • or 是 java 中的 |
  • Java 提供 setters/getters 而不是直接访问属性,因此 view
  • 上使用的 systemUiVisibility 的 setter 版本
  • 分号 ; 在 java 行尾是必须的。

这是有效的 java 版本:

@BindingAdapter("layoutFullscreen")
public static void bindLayoutFullscreen(View view, boolean previousFullscreen, boolean fullscreen) {
    if (previousFullscreen != fullscreen && fullscreen) {
        view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
    }
}