¿La mejor manera de combinar banderas enteras usando Kotlin?

1 minuto de lectura

avatar de usuario de whiskyjoe
whiskyjoe

En Java, combinamos banderas regularmente a través de | operador.

p.ej

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

Parece que no puedo encontrar el operador equivalente en Kotlin. ¿Alguien conoce una forma conveniente de combinar banderas enteras en Kotlin?

avatar de usuario de nhaarman
nhaarman

Solo usa 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
);

Esto puede ser un poco confuso. Puede crear una pequeña función de extensión auxiliar with (o lo que sea) para que sea más legible:

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
);

  • De acuerdo con el infijo, siempre he encontrado or ser un poco confuso

    – mradzinski

    09/04/2017 a las 19:12

¿Ha sido útil esta solución?