Tema Layar Penuh untuk AppCompat

304

Saya ingin tahu bagaimana cara menerapkan tema layar penuh (tanpa bilah judul + tanpa bilah tindakan) ke suatu aktivitas. Saya menggunakan pustaka AppCompat dari paket dukungan v7.

Saya sudah mencoba menerapkan android:theme="@android:style/Theme.NoTitleBar.Fullscreen"aktivitas spesifik saya tetapi macet. Saya pikir itu karena tema aplikasi saya seperti ini.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

Saya juga sudah mencoba ini

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

yang hanya menyembunyikan bilah judul tetapi bukan bilah tindakan. Solusi saya saat ini adalah menyembunyikan bilah tindakan dengan

getSupportActionBar().hide();
Ye Lin Aung
sumber

Jawaban:

836

Saat Anda menggunakan Theme.AppCompat di aplikasi Anda, Anda dapat menggunakan FullScreenTheme dengan menambahkan kode di bawah ini ke gaya.

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

dan juga sebutkan dalam file manifes Anda.

<activity
   android:name=".activities.FullViewActivity"
   android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" 
/>
nebyan
sumber
67
Gaya induk harus "Theme.AppCompat.Light.NoActionBar"
Hover Ruan
3
Sebenarnya, cukup menambahkan ini ke file gaya xml: <item name = "android: windowFullscreen"> true </item>. Visibilitas bilah tindakan (bilah judul) dapat dikontrol secara terpisah menggunakan metode .hide / .show saat runtime.
Amin
2
FEATURE_NO_TITLE tidak dihormati. Entah bedanya, tetapi saya akhirnya mengubah Kegiatan saya untuk memperluas Kegiatan alih-alih AppCompatActivity dan kode saya yang sama berfungsi (untungnya saya tidak perlu AppCompat): this.requestWindowFeature (Window.FEATURE_NO_TITLE); getWindow (). getDecorView (). setSystemUiVisibility (View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_BLOG_BLAG _ _ _ _ _ _ _ _.
user888867
ini juga menyembunyikan status bar :(
Omama
3
Saya akan menambahkan hideNavigation()di onResume()- tanpa itu, bar navigasi masih terlihat di app saya (api 18 +)
Antek
69

Berdasarkan jawaban oleh @nebyan, saya menemukan bahwa bilah tindakan masih tidak bersembunyi.

Kode berikut ini berfungsi untuk saya:

<style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

dan tentu saja jangan lupa mengedit AndroidManifestfile Anda .

<activity
    android:name="YOUR_ACTIVITY_NAME"
    android:theme="@style/AppFullScreenTheme" 
/>
Arahkan Ruan
sumber
@nebyan mengapa solusi Anda tidak berhasil, dan yang ini bekerja untuk saya? Apa alasannya?
ahmet
1
tidak perlu diatur <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item>jika tema Anda termasuk.NoActionBar
user924
19
<style name="Theme.AppCompat.Light.NoActionBar" parent="@style/Theme.AppCompat">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
</style>

Menggunakan xml di atas di style.xml, Anda akan dapat menyembunyikan judul serta bilah tindakan.

Dharmendra Pratap Singh
sumber
12

Masalah muncul di antara versi sebelum dan sesudah Android 4.0 (API level 14).

dari sini saya membuat solusi sendiri.

@SuppressLint("NewApi")
@Override
protected void onResume()
{
    super.onResume();

    if (Build.VERSION.SDK_INT < 16)
    {
        // Hide the status bar
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        // Hide the action bar
        getSupportActionBar().hide();
    }
    else
    {
        // Hide the status bar
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
        / Hide the action bar
        getActionBar().hide();
    }
}

Saya menulis kode ini dalam metode onResume () karena jika Anda keluar dari aplikasi dan membukanya kembali, bilah tindakan tetap aktif! (dan ini memperbaiki masalah)

Saya harap ini membantu;)

Krashash
sumber
Perhatikan bahwa jika pengguna secara manual menarik bilah status, itu tidak akan menyembunyikan dirinya sendiri. Untuk membuatnya lebih buruk, jika keyboard lunak ditampilkan, status bar secara otomatis juga dan lagi, tidak akan ditampilkan.
Hendra Anggrian
7
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //to remove "information bar" above the action bar
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    //to remove the action bar (title bar)
    getSupportActionBar().hide();
}
Shuyan Ji
sumber
5

Anda dapat mengikuti langkah di bawah ini: -

AndoridMenifest.xml

<activity
            android:name=".ui.FullImageActivity"
            android:label="@string/title_activity_main"
            android:screenOrientation="landscape"
            android:theme="@style/DialogTheme">
        </activity>

Style.xml

<style name="DialogTheme" parent="android:Theme.Dialog">

    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>

   <!-- No backgrounds, titles or window float -->
    <item name="android:windowNoTitle">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowIsFloating">false</item>
</style>

FullImageActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    setContentView(R.layout.image_view);
     }

Saya harap ini akan membantu .. Terima kasih !!

jagdish
sumber
4

Itu harus parent = "@ style / Theme.AppCompat.Light.NoActionBar"

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" 
parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
vststudy
sumber
Hanya solusi ini yang benar-benar menyembunyikan bilah judul dan membuatnya menjadi layar penuh. Harus ditandai sebagai solusi yang benar. Terima kasih!
Darko Maksimovic
3

Untuk menyembunyikan bilah status dan bilah tindakan dan menjadikan aktivitas Anda layar penuh gunakan kode berikut dalam aktivitas onResume()atau onWindowFocusChanged()metode Anda:

@Override
protected void onResume() {
    super.onResume();
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | 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);
}

Anda dapat menemukan informasi lebih lanjut di tautan berikut:

Catatan: Menggunakan solusi xml yang disediakan di utas ini saya hanya bisa menyembunyikan bilah status tetapi bukan bilah navigasi.

Darush
sumber
1
Terima kasih, ini satu-satunya yang menyembunyikan bilah navigasi! Sangat merekomendasikan jawaban ini.
Maharkus
2
requestWindowFeature(Window.FEATURE_NO_TITLE);
prashantwosti
sumber
2

Tema ini hanya berfungsi setelah API 21 (termasuk). Dan buatlah StatusBar dan NavigationBar transparan.

<style name="TransparentAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  <item name="windowActionBar">false</item>
  <item name="windowNoTitle">true</item>
  <item name="android:statusBarColor">@android:color/transparent</item>
  <item name="android:windowBackground">@android:color/transparent</item>
  <item name="android:navigationBarColor">@android:color/transparent</item>
  <item name="android:windowIsTranslucent">true</item>
  <item name="android:windowContentOverlay">@null</item>
</style>
DysaniazzZ
sumber
1

Untuk menghapus bilah judul di AppCompat:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
    }
Andoctorey
sumber
1

Anda dapat mencoba yang berikut ini :

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="android:windowFullscreen">true</item>
</style>
Sumit Shukla
sumber
0
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>

Matt Barrera
sumber
1
Tolong juga jelaskan kode, jika Anda memberikannya, itu membantu memahami kode Anda dan dapat membantu untuk mendapatkan wawasan untuk masalah di masa depan.
Lepidopteron
0

hanya ini ?

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen">
    <item name="android:windowFullscreen">true</item>
</style>
Xan
sumber
0

Cukup pada orang ini untuk Gaya Anda:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item> </style>
Reza Hamzehei
sumber