android wyłączenie paska nawigacyjnego

0

Potrzebuje w mojej aplikacji całkowicie wyłączyć widok paska nawigacyjnego (niechce aby w żaden sposób użytkownik opuścił aplikacje). Czy jest jaka kolwiek możliwość aby zrobić to globalnia a nie osobno dla każdego widoku ?

0

na pewno na starszych androidach(do 4.0 chyba) to działało jak ustawiłeś Theme Fullscreen

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

czy zadziało to to na nowszych androidach nie wiem, musisz sprawdzić

0

Tak pasek się chowa ale gdy klikniemy w obszarze gdzie powinien być to z powrotem się wysuwa. A ja chce go całkiem zablokować, bez możliwości przywrócenia.

0

no to jedyne co mi pozostaje poradzic to poczytanie tego artykulu

moze cos znajdziesz tam https://developer.android.com/training/system-ui/status.html

pzdr

0

Tutaj jedynie pokazują możliwość zablokowania górnego paska. Mi chodzi o ten na dole z przyciskami wstecz i home

0

aa :P

Wydaje mi się to niemożliwe. Ale moze jest jakis sposób. A jak będziesz miał device z rzeczywistymi przyciskami ?

0

Chciał bym tylko aby pasek był usunięty w jednej konkretnej aplikacji. By użytkownik nie mógł jej opuścić. A tak to ma być widoczny.

0

No ja rozumiem. Tylko się pytam co będzie jak będziesz miał device z prawdziwymi buttonami, a nie wyświetlonymi na ekranie ?

0

Nie będę miał bo to moje specjalne urządzenie.

0

takie cudo znalazłem, ale działa tylko od KitKata wzwyż:



@SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    currentApiVersion = android.os.Build.VERSION.SDK_INT;

if(currentApiVersion >= Build.VERSION_CODES.KITKAT)
    {

        getWindow().getDecorView().setSystemUiVisibility(flags);

        // Code below is to handle presses of Volume up or Volume down.
        // Without this, after pressing volume buttons, the navigation bar will
        // show up and won't hide
        final View decorView = getWindow().getDecorView();
        decorView
            .setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener()
            {

                @Override
                public void onSystemUiVisibilityChange(int visibility)
                {
                    if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
                    {
                        decorView.setSystemUiVisibility(flags);
                    }
                }
            });
    }



@SuppressLint("NewApi")
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    super.onWindowFocusChanged(hasFocus);
    if(currentApiVersion >= Build.VERSION_CODES.KITKAT && hasFocus)
    {
        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);
    }
}


Btw czy wspomniałem że to bardzo zła praktyka? :)

0

Widziałem ten przykład, ale nie usuwa on całkiem paska nawigacyjnego tylko ukrywa. Gdy klikniemy na dole ekranu to się wysuwa.

0

no właśnie o to chodzi że tutaj to się nie powinno zadziewać, bo mamy Focus Change Listenera który przy zmianie focusa powiniem nam go z powrotem usuwać.

Ale nie kłócę się bo nie sprawdzałem

0

Odpaliłem ten przykład i faktycznie pasek się chowa po wysunięciu ale jest chwila by nacisnąć np. przycisk back lub home

0

no i myślę że nic lepszego nie uzyskasz. Możesz ewentualnie przeciążyć onBackPressed.

0

Uzyskasz, uzyskasz ale nie tak łatwo. Przeczytaj wszystkie części tego opisu:
http://sdgsystems.com/blog/implementing-kiosk-mode-android-part-1

0

Ale do tego jest chyba wymagane NFC a ja go w moim urządzeniu nie mam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1