2015-08-27 4 views
3

Я нашел many questions вокруг отображения пользовательского интерфейса на «верхнем» (покрытии) и под (скрытом) статусе, по глубине. Но если у вас есть активность с уведомлением, которая снижается сверху, как вы ее позиционируете, чтобы она автоматически опускалась через панель состояния?Как разместить свой пользовательский интерфейс под строкой состояния Android?

В противном случае строка состояния перекрывается и скрывает пользовательский интерфейс, который только что спустился. A screenshot of a UI element coming down from the very top of the app but obscured by the status bar.

Должен ли я просто сделать UI более высоким по высоте \ status-bar \ для обработки этого перекрытия?

+0

Вы можете поместить верхний край в свой корневой вид или если вы хотите, чтобы строка состояния была полностью скрыта, используйте режимы погружения. – Varundroid

ответ

1

Вы должны программно добавить padding к своей деятельности, чтобы этого не произошло. Я придумал способ сделать это, собрав информацию из многих источников, даже здесь, в Stack Overflow.

Попробуйте адаптировать это к вашим потребностям:

private void fixActivityPadding() { 
    // gets additional padding (final padding: status bar height + custom padding) 
    int padX = getResources().getDimensionPixelSize(R.dimen.welcome_padding_x); 
    int padY = getResources().getDimensionPixelSize(R.dimen.welcome_padding_y); 
    // gets navigation and status bar heights 
    int navBarHeight = getResourceHeight("navigation_bar_height"); 
    int statusBarHeight = getResourceHeight("status_bar_height"); 

    // gets the layout in the Activity 
    View layout = findViewById(R.id.activity_layout); 
    // sets padding accordingly, considering orientation (nav bar position) 
    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { 
     layout.setPadding(padX, statusBarHeight + padY, padX, navBarHeight + padY); 
    } else { 
     layout.setPadding(padX, statusBarHeight + padY, navBarHeight + padX, padY); 
    } 
} 

// helper method 
private int getResourceHeight(String identifier) { 
    int result = 0; 
    int resourceId = getResources().getIdentifier(identifier, "dimen", "android"); 
    if (resourceId > 0) { 
     result = getResources().getDimensionPixelSize(resourceId); 
    } 
    return result; 
} 

Я просто не уверен, что вы имеете в виду Notification деятельности, но я считаю, что это должно помочь вам.

0

Я думаю, что это всего лишь WindowManager.LayoutParams.FLAG_FULLSCREEN. Addt его к вашей деятельности:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

Строка состояния становится видимой, когда пользователь пойла сверху.

Смежные вопросы