In java we regularly combine flags via the | operator.

例如:

getWindow().getDecorView().setSystemUiVisibility(
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | 
  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
);

I can't seem to find the equivalent operator in Kotlin. Anyone know a convenient way to combine integer flags in Kotlin?

推荐答案

Just use or:

getWindow().getDecorView().setSystemUiVisibility(
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
);

这可能有点令人困惑.您可以创建一个小助手扩展函数with(或其他任何函数),使其更具可读性:

infix fun Int.with(x: Int) = this.or(x)

getWindow().getDecorView().setSystemUiVisibility(
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE with
  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION with
  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
);

Kotlin相关问答推荐

如何在使用Kotlin Coroutines时检测和记录何时出现背压

Kotlin:将泛型添加到列表任何>

S使用MAP和ElseThrow的习惯用法是什么?

如何在不基于数据 map 的情况下将图例添加到lets plot kotlin

在 Kotlin 中,为什么我们要在闭包中捕获值

Kotlin 复制列表中的项目以创建具有相同数据的不同对象的新列表

Kotlin supervisorScope 即使包裹在 try catch 中也会失败

为什么 Kotlin 在将协变类型参数转换为不变类型参数时会产生 Unchecked Cast 警告?

如果带注释的成员未被特定块包围,则发出 IDE 警告

为什么没有remember 的 mutableStateOf 有时会起作用?

Kotlin 中列表或数组的乘积

Android 导航组件 - 向上导航打开相同的片段

无法解决:androidx.lifecycle:lifecycle-viewmodel-ktx:1.1.1

什么是开放式property?为什么我不能将其设置器设为private私有?

Kotlin 中的内联构造函数是什么?

未找到导入 kotlinx.coroutines.flow.*

将ExpectedException与Kotlin一起使用

Kotlin val difference getter override vs assignment

ObserveForver是否了解生命周期?

Kotlin lambda 语法混淆