Android'de durum çubuğu nasıl gizlenir


104

Bu bağlantıya başvurdum . Bu durumda, kullanıcı o sırada EditText'i tıklarsa (örneğin Kime:) klavye açılır ve aynı zamanda kullanıcı, kalan tüm görünümleri (ör: oluştur, konu, gönder düğmesi) görmek için kaydırabilir. o ekran. Benzer şekilde uygulamamda bazı widget'lara veya görünümlere sahip olduğum bir etkinliğim var. Diyelim ki kullanıcı Aktivitemde bulunan Edittext'e tıklarsa klavye dışarı çıkıyor ve kalan görünümleri görmek için kaydırabilirim. Ancak bu niteliği android:theme="@android:style/Theme.NoTitleBar.Fullscreen"manifestte verirsem , kalan görünümleri görmek için kaydıramadım ancak öznitelik verirsemandroid:theme="@android:style/Theme.NoTitleBar"manifest'te olduğu gibi, kalan görünümü görmek için kaydırabilirim, ancak bu ekranda durum çubuğu var, burada tam ekran istiyorum ve klavye dışarı çıksa bile kalan görünümleri görmek için kaydırabilirim ..? bunun için ne gibi değişiklikler yapmalıyım ..?


3
@ user448250: Android 3.0'da durum çubuğunu gizleyemeyeceğinizi ve ileride durum çubuğunu gizleyemeyeceğiniz için iyi bir şans olduğunu unutmayın. Android 3.0'da, durum çubuğu GERİ ve GİRİŞ düğmelerini barındırır, bu nedenle durum çubuğunun her zaman kullanılabilir olması gerekir.
CommonsWare

Emülatördeki hem başlığı hem de durum çubuğunu 3.0, API seviyesi 11 ile
gizlemeyi başardım.

Tam ekrana yine de izin verilmelidir, kullanıcı genellikle tam ekran oyun oynarken durum çubuğunu görmek istemez.
GMsoF

@ user448250 Bunu hiç buldunuz mu?
Tiago

Etkinlik nedir? Web sitenizin klasöründe bir xml dosyası var mı?
Nebular Toz

Yanıtlar:


173

Bunu Faaliyetinize yazın

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

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

Dokümanı buradan kontrol edin: https://developer.android.com/training/system-ui/status.html

ve uygulamanız tam ekrana geçecek. durum çubuğu yok, başlık çubuğu yok. :)


29
Etkinlik üst sınıfınız onCreate yönteminde setContentView öğesini çağırırsa, bunun işe yaramayacağını unutmayın - uygulama bir istisna ile çıkacaktır.
Ben Clayton

1
@Ron API seviyesinde 8. test yapıyordum. Diğer seviyelerde davranış farklı olabilir mi?
Ben Clayton

Bu, 2.3.x'ten 4.x'e kadar tüm sürümler için geçerli mi?
Kostadin

1
Bu, yazılım klavyesi gösterilirken ekranın kaymasını yine de engeller.
Tiago

3
Önce kullanın super.onCreate(savedInstanceState);kilitlenmesine eğer
David

19
 if (Build.VERSION.SDK_INT < 16) {
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 } else {
     View decorView = getWindow().getDecorView();
      int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
      decorView.setSystemUiVisibility(uiOptions);
      ActionBar actionBar = getActionBar();
      actionBar.hide();
 }

3
Bu yöntemi kullandığımda, ekran klavyesini göstermenin nesneleri yeniden boyutlandırmak yerine editText üzerindeki görünümleri taşıdığını fark ettim. Bunu nasıl düzeltirim?
android geliştiricisi

19

Temayı kullanın "Theme.NoTitleBar.Fullscreen"ve "android:windowSoftInputMode=adjustResize"etkinlik için ayar yapmayı deneyin AndroidManifest.xml.Ayrıntıları burada bulabilirsiniz .


Yukarıdaki yaklaşımla, uygulama tam ekran çalışırken durum çubuğum gizlenebilir, ancak sayfayı aşağı kaydırırken durum çubuğunu yine de görebilirim. Durum çubuğunu hiç istemememin bir yolu var mı?
Hazel Wang

15

Durum çubuğunu uygulamanızda gizlemek ve kullanımı kolay bu kodu kullanın

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

12

Buna bir aktivitede ihtiyacınız varsa, setContentView'dan önce onCreate'i eklemeniz gerekir:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.your_screen);

1
Bu, klavyenin web görünümünde giriş alanını kapsamasını sağlar.
Allen Vork

@AllenVork herhangi bir çözüm?
Ishaan Kumar

12

Bunu Aktivite sınıfınıza ekleyin

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(
                        WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    // some your code
}

8

Bunu sizin için kullanın Activity.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

6
void hideStatusBar() {
        if (Build.VERSION.SDK_INT < 16) {
           getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

Durum çubuğunu gizlemek için bu yöntemi kullanabilirsiniz. Ve bu işlem çubuğunu gizlemek için de önemlidir. Bu durumda, şunları yapabilirsiniz getSupportActionBar (). Hide () Eğer AppCompat gibi destek lib herhangi bir etkinlik olduğunu genişletilmiş varsa veya sadece çağırabilirsiniz getActionBar (). Hide () metodu yukarıda belirtilen sonra. Teşekkürler


6

manifest.xmlDosyadaki uygulama temasını değiştirin .

android:theme="@android:style/Theme.Translucent.NoTitleBar"

Garip bir şekilde bu, ekranın üst kısmında turuncu bir çubuk gösteriyor. Bildirim çubuğu yine de gizlidir.
Danish Ashfaq

6

Durum çubuğunu gizliyorsanız, bunu onCreate (Activity için) ve onCreateView / onViewCreated (Fragment için) içinde yapın.

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

Aktiviteden çıkarken bayrağı temizlemeyi unutmayın, aksi takdirde bu aktiviteyi ziyaret ettikten sonra tüm uygulamanızda tam ekrana sahip olacaksınız. Bunu onDestroy (Etkinlik için) veya onDestroyView (Parça için) içinde temizlemek için

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

5

Bu kodu kullanın:

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

4

Bu kod, durum çubuğunu gizler.

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

eylem çubuğunu gizlemek için bu satırı yazın: -

requestWindowFeature(Window.FEATURE_NO_TITLE);

Eylem çubuğunu ve durum çubuğunu gizlemek için her iki satır da toplu olarak yazılabilir. tüm bu satırlar setContentViewyöntemde yöntem çağrılmadan önce yazılmalıdır onCreate.


Güzel çalışıyor. Teşekkürler!
Joshua Pinter

3

AndroidManifest.xml'de -> kullanmak istediğiniz aktivitenin içine aşağıdakileri ekleyin:

android:theme="@style/Theme.AppCompat.Light.NoActionBar"
//this is for hiding action bar

ve MainActivity.java -> onCreate () yönteminin içine aşağıdakileri ekleyin:

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//this is for hiding status bar

3

Styles.xml kullanarak gizleyebilirsiniz

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
<style name="HiddenTitleTheme" parent="AppTheme">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

sadece bunu manifestinde şöyle ara android:theme="@style/HiddenTitleTheme"


3

Xml kullanarak rengini transperant olarak ayarlayarak durum çubuğunu gizleyebilirsiniz . Ekle statusBarColor etkinlik temasına öğeyi:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

pls biraz açıklama kodu ekleyin, sadece cevaplar başkaları için biraz kafa karıştırıcı
Ram Ghadiyaram

2
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setTheme(R.style.Theme_AppCompat_Light_NoActionBar);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

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

    setContentView(R.layout.activity__splash_screen);
}

Bu kod soruyu çözebilirken, sorunun nasıl ve neden çözüldüğüne dair bir açıklama da dahil olmak üzere , gönderinizin kalitesini artırmaya gerçekten yardımcı olur ve muhtemelen daha fazla oy almanıza neden olur. Sadece şimdi soran kişi için değil, gelecekte okuyucular için soruyu cevapladığınızı unutmayın. Açıklamalar eklemek ve hangi sınırlamaların ve varsayımların geçerli olduğuna dair bir gösterge vermek için lütfen yanıtınızı düzenleyin .
Dharman

AppCompat'ın tam olarak ne olduğu hakkında pek bir fikrim yoktu, sadece onu kullanıyordum. Ve bu üç satır işi yaptı.
user3156040

Yazık ki, Google'ın kendi belgelerinin her zaman olduğu gibi, bunu nasıl başaracağı yanlış. Belki de bu kodu kopyalayıp yapıştırmaları gerekir.
zeeshan


0

(4.4+) kitkat veya üzeri cihazlarda durumun tam ekran modunda görünmesini engelleyemeyiz, bu nedenle durum çubuğunun genişlemesini engellemek için bir hack deneyin.

Çözüm oldukça büyük, işte SO'nun bağlantısı:

StackOverflow: Android 4.4+ veya kitkat'ta Tam Ekran ile durum çubuğunu gizleyin


Sanırım yanılıyorsunuz, lütfen durum çubuğu geliştiricisini
Android.com/training/system-ui/status.html

Jose, verilen bağlantıdaki bilgileri kontrol edeceğim ve gerekirse cevabı güncelleyeceğim. Bu soru / cevap, bu senaryo için resmi bir çözüm olmadığı bir yıl önce eklendi. Bir sonraki sürümde olabilir veya google / android sürümleri aynı API / yöntemi eklemiştir. Çözümü sağlamışlarsa, bu bir zevktir. Teşekkürler!
Jyo the Whiff

0

Bu çözüm benim için çalışıyor :)

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= 19) {
           getWindow().setFlags(AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT, AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT);
           getWindow().getDecorView().setSystemUiVisibility(3328);
    }else{
           requestWindowFeature(Window.FEATURE_NO_TITLE);
           this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    DataBindingUtil.setContentView(this, R.layout.activity_hse_video_details);

0
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // If the Android version is lower than Jellybean, use this call to hide
    // the status bar.
    if (Build.VERSION.SDK_INT < 16) {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    } else {
       View decorView = getWindow().getDecorView();
       // Hide the status bar.
       int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
       decorView.setSystemUiVisibility(uiOptions);
       // Remember that you should never show the action bar if the
       // status bar is hidden, so hide that too if necessary.
       ActionBar actionBar = getActionBar();
       actionBar.hide();
    }

    setContentView(R.layout.activity_main);

}
...
}

0

Kullanılan Manifest

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

Muhtemelen temaya bağlı. Benim durumumda bir istisna oluştu: "java.lang.IllegalStateException: Bu etkinlikle bir Theme.AppCompat teması (veya alt öğesi) kullanmanız gerekir."
CoolMind

0

Res -> values ​​-> styles.xml altında

İçinde stil vücut etiketi yapıştırma

<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>

0

Google Dokümanlarına başvurursanız, bu yöntemi android 4.1 ve üstü için kullanabilirsiniz, setContentView () 'dan önce bu yöntemi çağırın.

public void hideStatusBar() {
    View view = getWindow().getDecorView();
    int uiOption = View.SYSTEM_UI_FLAG_FULLSCREEN;
    view.setSystemUiVisibility(uiOption);
    ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
}

-1
requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

Merhaba! Yaptığınız şey hakkında bazı yorumlar veya sözlü açıklamalar eklemeyi düşünün.
George
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.