如何将实现布局全屏的Kotlin BindingAdapter转为等效Java代码
Java复现Kotlin BindingAdapter全屏逻辑的修正方案
原有代码错误点
- 缺少扩展函数对应的View参数:Kotlin中
fun View.bindLayoutFullscreen(...)是View的扩展函数,转成Java静态方法需要把View作为第一个入参 - 位运算符错误:Kotlin的位或关键字
or对应Java的位或运算符| - 调用方式错误:
systemUiVisibility是View实例的成员属性,不是静态属性,需要通过传入的View实例调用,同时Java中调用该属性用setSystemUiVisibility()方法,语句末尾需要补分号
修正后可运行代码
import android.view.View; import androidx.databinding.BindingAdapter; @BindingAdapter("layoutFullscreen") public static void bindLayoutFullscreen(View targetView, Boolean previousFullscreen, Boolean fullscreen) { if (previousFullscreen != fullscreen && fullscreen) { targetView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); } }
功能对齐说明
修正后的代码逻辑和原Kotlin代码完全一致:仅当layoutFullscreen属性值从false变为true时,才会为目标View设置允许布局延伸到状态栏和导航栏后方的标识,实现全屏适配效果。
内容的提问来源于stack exchange,提问作者G. Ciardini
相关产品推荐
相关产品推荐

