2015-05-25 3 views
3

Моего Android приложение начинается со следующей планировкой:андроида: fitsSystemWindows во время выполнения

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/root" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Click"/> 
</RelativeLayout> 

активности имеет смещение для строки состояния.

Я хочу удалить это смещение во время выполнения, нажав на кнопку. При нажатии на кнопку я делаю следующее, но он не работает, ничего не происходит:

findViewById(R.id.root).setFitsSystemWindows(false); 

Как я могу это сделать?

ответ

0

Попробуйте Установить флаг состояния один

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     Window w = getWindow(); // in Activity's onCreate() for instance 
     w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 
     w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
    } 

для удаления статусного смещения и Панели навигации для удаления мягких-кнопок.

+0

Я уже использую этот параметр. Я использую android: windowTranslucentStatus и android: fitsSystemWindows. Оба они верны. И нажав на кнопку, я хочу удалить смещение, но не удалить полупрозрачный. – ilyamuromets

+0

попробуйте, возможно, этот ответ может помочь. http://stackoverflow.com/a/28041425/3728591 –

+0

Спасибо, но это мне не помогло. Проблема, с которой я работаю в одном действии. Я не могу воссоздать деятельность. – ilyamuromets

10

Я занимаюсь этой проблемой и нашел только этот неотвеченный вопрос.

Наконец я нашел решение:

View view = findViewById(R.id.root); 
view.setFitsSystemWindows(false); 
view.setPadding(0, 0, 0, 0); 

Установка fitsSystemWindows истина изменяет отступ. Очевидно, что отключение fitsSystemWindows поддерживает набор дополнений.

+0

Человек это был ответ, который я искал! Но что, если я хочу снова установить значениеFitsSystemWindows? – Simon

+0

Вы можете снова установить значение true. Просто не забудьте очистить заполнение каждый раз, когда вы устанавливаете значение false. –

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