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

pengguna448250
sumber
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. :)

Fugogugo
sumber
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();
 }
Polisi
sumber
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 .

Karan
sumber
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);
Prabh Deep
sumber
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);
Cabezas
sumber
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
}
Faxriddin Abdullayev
sumber
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);
}
Patel Vicky
sumber
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

Farruh Habibullaev
sumber
6

Ubah tema aplikasi di manifest.xmlfile.

android:theme="@android:style/Theme.Translucent.NoTitleBar"
Yogendra
sumber
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)
Shangeeth Sivan
sumber
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);
Muhammad Laraib Khan
sumber
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.

Harish Gyanani
sumber
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
Mohan Munisifreddy
sumber
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"

Mudasar
sumber
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>
Oleh Liskovych
sumber
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);
}
pengguna3156040
sumber
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

Jyo si Whiff
sumber
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);
Dhaval Jivani
sumber
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);

}
...
}
Ahamadullah Saikat
sumber
0

Digunakan dalam Manifest

android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"
Atif Amin
sumber
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>

sumber
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();
    }
}
Mahdi Zareei
sumber
-1
requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

sumber
Halo! Pertimbangkan untuk menambahkan beberapa komentar atau penjelasan verbal tentang apa yang Anda lakukan.
George