Cara menyembunyikan bilah status di Android


103

Saya merujuk tautan ini . Dalam hal ini jika pengguna mengklik EditText (untuk ex To:) pada saat itu keyboard akan muncul dan pada saat yang sama pengguna dapat menggulir untuk melihat semua tampilan yang tersisa (contoh: tulis, subjek, tombol kirim) di layar itu. Demikian pula di aplikasi saya, saya memiliki satu aktivitas di mana saya memiliki beberapa widget atau tampilan. Misalkan jika pengguna mengklik Edittext yang ada di Aktivitas saya maka keyboard muncul dan saya dapat menggulir untuk melihat tampilan yang tersisa. Tetapi jika saya memberikan atribut ini android:theme="@android:style/Theme.NoTitleBar.Fullscreen"di manifes saya tidak dapat menggulir untuk melihat tampilan yang tersisa tetapi jika memberi atributandroid:theme="@android:style/Theme.NoTitleBar"seperti ini dalam manifest saya dapat menggulir untuk melihat tampilan yang tersisa tetapi ada bilah status di layar itu, di sini saya ingin layar penuh dan bahkan jika keyboard muncul saya dapat menggulir untuk melihat tampilan yang tersisa ..? perubahan apa yang harus saya lakukan untuk ini ..?


3
@ user448250: Perhatikan bahwa Anda tidak dapat menyembunyikan bilah status di Android 3.0, dan ada kemungkinan besar Anda tidak akan dapat menyembunyikan bilah status di masa mendatang. Di Android 3.0, bilah status menampung tombol KEMBALI dan BERANDA, jadi bilah status harus selalu tersedia.
CommonsWare

Saya baru saja berhasil menyembunyikan bilah judul dan status pada emulator dengan 3.0, API level 11.
erdomester

Layar penuh harus tetap diizinkan, pengguna biasanya tidak ingin melihat bilah status saat memainkan game layar penuh.
GMsoF

@ user448250 Apakah Anda pernah mengetahui hal ini?
Tiago

Apakah aktivitas itu? Itu beberapa file xml di folder situs web Anda?
Debu Nebular

Jawaban:


170

Tuliskan ini di Aktivitas Anda

@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);
}

Periksa Dokumen di sini: https://developer.android.com/training/system-ui/status.html

dan aplikasi Anda akan menjadi layar penuh. tidak ada bilah status, tidak ada bilah judul. :)


29
Perhatikan bahwa ini tidak akan berfungsi jika superclass aktivitas Anda memanggil setContentView dalam metode onCreate - aplikasi akan berhenti dengan pengecualian.
Ben Clayton

1
@Ron Saya menguji pada API level 8. Mungkinkah perilakunya berbeda di level lain?
Ben Clayton

Apakah ini berlaku untuk semua versi dari 2.3.x hingga 4.x?
Kostadin

1
Ini masih mencegah layar bergulir saat papan tombol perangkat lunak ditampilkan.
Tiago

2
Gunakan sebelumnya super.onCreate(savedInstanceState);jika macet
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
Saya perhatikan bahwa ketika saya menggunakan metode ini, menunjukkan soft-keyboard memindahkan tampilan di atas editText, alih-alih mengubah ukuran. Bagaimana cara mengatasinya?
Pengembang android

19

Gunakan tema "Theme.NoTitleBar.Fullscreen"dan coba pengaturan "android:windowSoftInputMode=adjustResize"untuk aktivitas di AndroidManifest.xml.Anda dapat menemukan detailnya di sini .


Dengan pendekatan di atas, bilah status saya dapat disembunyikan saat aplikasi menjalankan layar penuh, namun, saya masih dapat melihat bilah status saat menggeser halaman ke bawah. Apakah ada cara jika saya sama sekali tidak menginginkan bilah status?
Hazel Wang

13

Gunakan kode ini untuk menyembunyikan bilah status di aplikasi Anda dan mudah digunakan

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

12

Jika Anda membutuhkan ini dalam satu aktivitas, Anda harus meletakkan onCreate, sebelum setContentView:

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

setContentView(R.layout.your_screen);

1
Cara ini membuat bidang input penutup keyboard di tampilan web.
Allen Vork

@AllenVork ada solusi?
Ishaan Kumar

12

Tambahkan ini ke kelas Aktivitas Anda

@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

Gunakan ini untuk Anda 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);
        }
    }

Anda dapat menggunakan metode ini untuk menyembunyikan bilah status. Dan ini juga penting untuk menyembunyikan bilah tindakan. Dalam kasus ini, Anda bisa getSupportActionBar (). Hide () jika Anda telah memperluas aktivitas dari lib dukungan seperti Appcompat atau Anda cukup memanggil getActionBar (). Hide () setelah metode yang disebutkan di atas. Terima kasih


6

Ubah tema aplikasi di manifest.xmlfile.

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

Anehnya, ini menunjukkan bilah oranye di bagian atas layar. Bilah notifikasi disembunyikan.
Denmark Ashfaq

6

Jika Anda menyembunyikan bilah status, lakukan ini di onCreate (untuk Aktivitas) dan onCreateView / onViewCreated (untuk Fragment)

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

Dan jangan lupa untuk menghapus bendera saat keluar dari aktivitas atau Anda akan memiliki layar penuh di seluruh aplikasi Anda setelah mengunjungi aktivitas ini. Untuk menghapus lakukan ini di onDestroy (untuk Aktivitas) atau onDestroyView (untuk Fragment) Anda

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

5

Gunakan kode ini:

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

4

Kode ini menyembunyikan bilah status.

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

untuk menyembunyikan bilah tindakan, tulis baris ini: -

requestWindowFeature(Window.FEATURE_NO_TITLE);

kedua baris dapat ditulis secara kolektif untuk menyembunyikan bilah Tindakan dan bilah status. semua baris ini harus ditulis sebelum setContentViewmetode memanggil onCreatemetode.


Bekerja dengan indah. Terima kasih!
Joshua Pinter

3

Di AndroidManifest.xml -> di dalam aktivitas yang ingin Anda gunakan, tambahkan yang berikut ini:

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

dan dalam metode MainActivity.java -> di dalam onCreate (), tambahkan yang berikut ini:

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

3

Anda bisa bersembunyi dengan menggunakan styles.xml

<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>

sebut saja ini dalam manifesmu seperti ini android:theme="@style/HiddenTitleTheme"


2

Anda dapat menyembunyikan bilah status dengan mengatur warnanya menjadi transperan menggunakan xml . Tambahkan item statusBarColor ke tema aktivitas Anda:

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

tolong tambahkan beberapa kode penjelasan hanya jawaban yang agak membingungkan bagi orang lain
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);
}

Meskipun kode ini dapat menyelesaikan pertanyaan, termasuk penjelasan tentang bagaimana dan mengapa ini menyelesaikan masalah akan sangat membantu untuk meningkatkan kualitas posting Anda, dan mungkin menghasilkan lebih banyak suara. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, bukan hanya orang yang bertanya sekarang. Harap edit jawaban Anda untuk menambahkan penjelasan dan memberikan indikasi batasan dan asumsi apa yang berlaku.
Dharman

Saya tidak tahu banyak tentang apa sebenarnya AppCompat itu, hanya menggunakannya. Dan ketiga baris ini berhasil.
pengguna3156040

Sayangnya, dokumentasi Google sendiri, seperti biasa, salah tentang cara mencapai hal ini. Mungkin mereka harus menyalin dan menempel kode ini.
zeeshan


0

Kami tidak dapat mencegah status muncul dalam mode layar penuh di perangkat (4.4+) kitkat atau di atasnya, jadi coba retas untuk memblokir bilah status agar tidak meluas.

Solusinya cukup besar, jadi inilah tautan SO:

StackOverflow: Sembunyikan bilah status di Android 4.4+ atau kitkat dengan Layar Penuh


Saya pikir Anda salah, silakan lihat info resmi tentang menyembunyikan bilah status developer.android.com/training/system-ui/status.html
Jose Ricardo Citerio Alcala

Jose, saya akan memeriksa informasi pada tautan yang diberikan dan akan memperbarui jawabannya jika diperlukan. Pertanyaan / jawaban ini ditambahkan setahun yang lalu ketika tidak ada solusi resmi untuk skenario ini. Mungkin di rilis berikutnya atau versi google / android telah menambahkan API / metode yang sama. Jika mereka telah memberikan solusi maka itu menyenangkan. Terima kasih!
Jyo the Whiff

0

Solusi ini berhasil untuk saya :)

@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

Digunakan dalam Manifest

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

Mungkin tergantung tema. Dalam kasus saya terjadi pengecualian: "java.lang.IllegalStateException: Anda perlu menggunakan tema Theme.AppCompat (atau turunan) dengan aktivitas ini."
CoolMind

0

Di bawah res -> nilai -> styles.xml

Di dalam pasta tag tubuh gaya

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

0

Jika Anda merujuk ke Google Documents, Anda dapat menggunakan metode ini untuk Android 4.1 dan yang lebih baru, panggil metode ini sebelum setContentView ()

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);

Halo! Pertimbangkan untuk menambahkan beberapa komentar atau penjelasan verbal tentang apa yang Anda lakukan.
George
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.