2015-04-30 4 views
2

Я уже пялился на эту тему в течение недели. Различные поисковые запросы Google выявили возможные решения, но ничего не получилось.Android type_system_overlay не покрывает весь экран

Я бы разместил ссылку на свое приложение, но я уверен, что это запрещено. Простое приложение: нажмите кнопку и активирует полупрозрачный цветной накладной.

Вопрос:

Когда наложение активируется, и если навигационная панель прозрачна, она не покрывает/идти за навигационной панели.

Пример: вы можете видеть, что панель навигации не закрыта. Прозрачный синий - это наложение.

example of issue.

В основной деятельности после супер и настройки представления содержимого:

Intent i = new Intent(getApplicationContext(), TintOverlayService.class); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

В TintOverlayService.class

LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
    windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); 
    mTopView = (LinearLayout) li.inflate(R.layout.red_overlay, null, false); 
    mTopView.setBackgroundColor(Color.parseColor(colorCode.replace("#", tintValue))); 

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.MATCH_PARENT, 
      WindowManager.LayoutParams.MATCH_PARENT, 
      WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
      WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, 
      PixelFormat.TRANSLUCENT);  

Этот Color.parseColor(colorCode.replace("#", tintValue)) просто применяет пользователь выбрал цвет и уровень непрозрачности.

XML для red_overlay раскладка

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#40370000" 
    android:theme="@android:style/Theme.Holo.NoActionBar.TranslucentDecor" 
    android:fitsSystemWindows="true" 
    > 
</LinearLayout> 

Я пробовал различные WindowManager.LayoutParams, макеты, пользовательские темы, вид флаги, захватывающий вид вещь. Я сейчас в недоумении с головной болью.

Любая помощь очень ценится.

+0

Одним из решений было бы скрыть навигационную панель. Пожалуйста, обратитесь к ссылке: https://developer.android.com/training/system-ui/navigation.html – abhishesh

+0

У меня такая же проблема. Какие-нибудь Новости? – AnAurelian

+0

К сожалению, я все еще не в состоянии понять это. – cfisher

ответ

0

Все, что я должен был сделать, это добавить два флага параметров:

WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;

int LayoutParamFlags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN 
        | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION 
        | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.MATCH_PARENT, 
        densityDpi * 6, 
        WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
        LayoutParamFlags, 
        PixelFormat.TRANSLUCENT); 
Смежные вопросы