2015-11-30 5 views
11

In java combiniamo regolarmente le bandiere tramite | operatore.Il modo migliore per combinare i flag di interi utilizzando Kotlin?

ad es.

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

Non riesco a trovare l'operatore equivalente in Kotlin. Qualcuno conosce un modo conveniente per combinare le flag di interi in Kotlin?

risposta

31

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

questo può essere un po 'di confusione. È possibile creare un po 'di funzione di estensione aiutante with (o qualsiasi altra cosa) per renderlo più leggibile:

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

concordano sulla infisso, ho sempre trovato '' 'or''' per essere un po' di confusione – mradzinski

Problemi correlati