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

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

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

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


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


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

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


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>

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.


1
Terima kasih, ini satu-satunya yang menyembunyikan bilah navigasi! Sangat merekomendasikan jawaban ini.
Maharkus


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>

1

Untuk menghapus bilah judul di AppCompat:

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

1

Anda dapat mencoba yang berikut ini :

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="android:windowFullscreen">true</item>
</style>

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>


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>

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