0

Ich versuche, Statusleiste in Fragment zu verstecken. Ich habe Symbolleiste erfolgreich versteckt, aber ich will nur in einem Fragment ..Hide Statusbar in Fragment

@Override 
    public void onCreate(Bundle arg0) { 
     super.onCreate(arg0); 

    // requestWindowFeature(Window.FEATURE_NO_TITLE); 

     ((HomeActivity)getActivity()).getSupportActionBar().hide(); 
    } 

Above Code funktioniert gut für das Ausblenden Symbolleiste

requestWindowFeature(Window.FEATURE_NO_TITLE); 

Wenn ich requestWindowFeature in Fragment onCreate (auch Statusleiste auszublenden erwähnt oben) Anwendung wurde abgestürzt.

added drei Bilder nach dem zweiten Antwort Umsetzung

[normaler Bildschirm] [1] [nach dem Code funktioniert Waren] [2] [when kam zurück von Vollbild] [3]

[1]: https://i.stack.imgur.com/KbX4T.jpg 
    [2]: https://i.stack.imgur.com/sSWqf.jpg 
    [3]: https://i.stack.imgur.com/urJaK.jpg 

Antwort

0

@Lalit Singh Fauzdar antwort zu verbergen statusBar ist korrekt. Wenn Sie statusBar anzeigen möchten, können Sie View decorView = getActivity().getWindow().getDecorView(); // Hide the status bar. int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE; decorView.setSystemUiVisibility(uiOptions); verwenden

+0

danke für die erweiterung antwort ..... hat mir geholfen –

1

Nur eine copy-Paste aus meinem Projekt obwohl doch diese Weise können Sie die Statusleiste in einem Fragment verstecken können.

private int currentApiVersion;  
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     getActivity().getWindow().getDecorView().setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
       View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
     currentApiVersion = android.os.Build.VERSION.SDK_INT; 
     final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
       | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_FULLSCREEN  
       | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; 
     if(currentApiVersion >= Build.VERSION_CODES.KITKAT) { 
      getActivity().getWindow().getDecorView().setSystemUiVisibility(flags); 
      final View decorView = getActivity().getWindow().getDecorView(); 
      decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { 
       @Override 
       public void onSystemUiVisibilityChange(int visibility) { 
        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { 
         decorView.setSystemUiVisibility(flags); 
        } 
       } 
      }); 
     } 
     return inflater.inflate(R.layout.yourLayout, container, false); 
    } 

Erinnern, dass dieser Code in Ihrem Fragmente Klasse kopiert werden soll und nicht in irgendeiner Methode.

Und ja, Sie nur den Code unten verwendet haben könnte:

getActivity().getWindow().getDecorView().setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
       View.SYSTEM_UI_FLAG_FULLSCREEN); 
+0

danke! Ihre Codes funktionieren für MarshMallow .... für meine Bedenken für niedrigere und höhere Version möchte ich Sie fragen, ob ... das für 15 api bis 27 api funktioniert? –

+0

und wie statusBar wieder angezeigt wird? Ich kann es nicht für ein anderes Fragment zeigen. siehe drei Bilder, die ich bearbeitet habe que –

0

Ich hoffe, dass dieser Code Ihnen mehr helfen ..

Von Aktivität ...

public class MainActivity extends AppCompatActivity{ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // YOUR FRAGMENT 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.fragment_container, fragment,fragment.toString()); 
    fragmentTransaction.commit(); 

    } 
public void HideStatusBar() { 
    this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 
public void ShowStatusBar() { 
    this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 
} 

aus dem Fragment ..

public class FragmentOne extends Fragment{ 

private Activity mActivity; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


((MainActivity) getActivity()).HideStatusBar(); 
    } 
@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    this.mActivity = activity; 

} 
@Override 
public void onDetach() { 
    super.onDetach(); 
    this.mActivity = null; 
} 
@Override 
public void onDestroyView() { 
    super.onDestroyView(); 
    if (mActivity!=null){ 
     ((MainActivity) getActivity()).ShowStatusBar(); 
    } 
} 
} 
+0

HideStatusBar() Ich muss diese Methode von Fragment onCreate aufrufen? –

+0

bitte meinen Update-Code. Ich denke, es hilft Ihnen .. –

+0

Wenn Sie denken, dass meine Antwort Ihnen hilft, bitte in Betracht ziehen, es zu akzeptieren. Danke ! –