Как обернуть строку в kotlin? - PullRequest
1 голос
/ 12 апреля 2020

Например, у меня есть такой java метод

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    if (hasFocus) {
        // Standard Android full-screen functionality.
        // Use for hide status bar and navigation buttons
        getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        );

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
}

Все условия видны и легко читаются, но есть реализация kotlin

override fun onWindowFocusChanged(hasFocus: Boolean) {
             super.onWindowFocusChanged(hasFocus)
             if (hasFocus) {
                 // Standard Android full-screen functionality.
                 // Use for hide status bar and navigation buttons
                 window.decorView.systemUiVisibility =
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                 window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
             }
         }

У вас есть только одна длинная длинная строка, и ее совсем не легко прочитать. Если вы попытаетесь обернуть эту строку, как в java, вы получите ошибку ...

Итак, есть ли способ сделать ее более подходящей?

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Однако вы можете написать or вызов до конца строки:

window.decorView.systemUiVisibility =
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
    View.SYSTEM_UI_FLAG_FULLSCREEN or
    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

Другим способом обхода может быть использование неинфиксного вызова:

window.decorView.systemUiVisibility =
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    .or(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
    .or(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
    .or(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
    .or(View.SYSTEM_UI_FLAG_FULLSCREEN)
    .or(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
0 голосов
/ 12 апреля 2020

Пожалуйста, попробуйте использовать скобки. Примерно так, как показано ниже:

window.decorView.systemUiVisibility =   (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...