13

Potrzebuję wykonać jedną z moich czynności o nazwie MyNoStatusBarActivity.java pełnoekranowym działaniem.android: theme = "@ android: style/Theme.NoTitleBar.Fullscreen" działa na poziomie aplikacji, ale nie na poziomie aktywności. Jakaś wskazówka?

Dodałem w manifeście:

<activity 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:name=".MyNoStatusBarActivity" 
    android:noHistory="true" 
    android:label="@string/app_name" 
    android:configChanges="touchscreen|keyboard|keyboardHidden|navigation|orientation"> 
    ... 
</activity> 

A w onCreate mojej działalności:

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    getWindow().setFlags(
     WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 

Robi to wszystko po prostu ukrywa pasek tytułowy, a nie na pasku stanu.

Również jeśli używam motywu manifestu na poziomie aplikacji, a nie mojej aktywności, działa ona tylko dla wszystkich działań mojej aplikacji, która nie jest tym, czego chcę. Nie chcę paska stanu tylko dla jednej konkretnej czynności.

Pomoc zostanie doceniona. Thnx!

P.S: W porządku, to zachowanie nie jest już dostępne w strukturze plastra miodu/ICS. muszę to tylko 2,2 i 2,3

EDIT

próbowałem wszystkie propozycje wymienione w innych roztworach w SO, ale bez powodzenia jednak. Motyw działa po zastosowaniu na poziomie aplikacji, ale nie na poziomie aktywności.

używam HTC Wildfire S Android-ver 2.3.5

Odpowiedz

6

myślę, że po prostu trzeba wziąć android:theme="@android:style/Theme.NoTitleBar.Fullscreen z mainfest, trzymać z kodem tylko zadzwonić, to zawsze pracował dla mnie. Z jakiego urządzenia testowego korzystasz?

Upewnij się także takie rozmowy są przed zadzwonić do setContentView(R.layout.xxx) jak ten

super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.xxx); 

sprawdzić wszystkie kodu dla android:theme deklaracji, tj oczywistych i indywidualnych układach plików XML. wygląda na to, że deklarowanie go na poziomie aplikacji działa (ponieważ przesłoniło wszelkie późniejsze deklaracje motywów), ale coś przesłoniło żądanie poziomu aktywności.

Spróbuj wyszukać cały projekt dla „android: Temat” i usunąć wszystko, że nie jesteś w 100% pewien, trzeba przetestować go w ten sposób

+0

to powinno działać na Android 2.x, a przede –

+0

robi praca . Wyłączony zostaje tylko tytuł, ale pasek stanu pozostaje. Używam HTC WildFire-S, Android wer. 2.3.5 –

+0

W rzeczywistości wygląda na to, że górna część aktywności znajduje się poniżej paska stanu. Pasek stanu wydaje się mieć wysoki indeks z i ukrywa część mojej pełnoekranowej aktywności! –

29

W swojej oczywistej xml, na poziomie aplikacji umieścić to:

<application 
    ... 
    android:theme="@android:style/Theme.NoTitleBar" > 
</application> 

i aktywności, które chcesz, aby umieścić to na pełnym ekranie:

<activity 

    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
    ... 
</activity> 

Usuń wszystkie metody setWindowsFeature lub setFlag w onCreate.

+0

przykro, ale działa to dla Androida 2.3 ? – Dante

+1

Wierzę, że tak, użyłem tego testu na Androida 2.2 – Neoh

3

kładę to w mojej działalności:

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_splash); 

i moim manifest nie modyfikować, to jest moje, bez zmian:

android:theme="@style/AppTheme" 

W moich działaniach w xml:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
0

To wystarczy:

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    getWindow().setFlags(
     WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    setContentView(R.layout.activity_main); 
} 
0

To rozwiąże Twój problem

wystarczy zmienić w swoim oczywistym @android: styl ... do @ stylu/..

<application 
    ... 
    android:theme="@style/Theme.AppCompat.NoActionBar"> 
    ... 
</application>