AppCompat için Tam Ekran Teması


304

Bir etkinliğe tam ekran temasını (başlık çubuğu + işlem çubuğu yok) nasıl uygulayabileceğimi bilmek istiyorum. AppCompat kütüphanesini v7 destek paketinden kullanıyorum.

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"Özel aktiviteme başvurmaya çalıştım ama çöktü. Bence uygulama temam böyle.

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

Bunu da denedim

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

Bu işlem yalnızca başlık çubuğunu gizler, ancak işlem çubuğunu gizlemez. Şu anki çözümüm, eylem çubuğunu gizlemek

getSupportActionBar().hide();

Yanıtlar:


836

Uygulamanızda Theme.AppCompat kullandığınızda, aşağıdaki kodu stillere ekleyerek FullScreenTheme'i kullanabilirsiniz.

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

ve manifest dosyanızda da bahsedin.

<activity
   android:name=".activities.FullViewActivity"
   android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" 
/>

67
Ana stil "Theme.AppCompat.Light.NoActionBar" olmalıdır
Hover Ruan

3
Aslında, bunu xml stiline eklemek yeterlidir: <item name = "android: windowFullscreen"> true </item>. Eylem çubuğunun (başlık çubuğu) görünürlüğü, çalışma zamanında .hide / .show yöntemleri kullanılarak ayrı ayrı kontrol edilebilir.
Amin

2
FEATURE_NO_TITLE onurlandırılmıyordu. Farkı bilmiyorum, ama sonunda aktivitemi AppCompatActivity yerine Etkinliği uzatmak için değiştirdim ve aynı kodum çalıştı (neyse ki AppCompat'a ihtiyacım yok): 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_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
user888867

bu durum çubuğunu da gizler :(
Omama

3
Ben eklersiniz hideNavigation()içinde onResume()- bu olmadan, gezinti çubuğu hala benim app (API 18+) görülüyordu
Antek

69

@Nebyan'ın cevabına dayanarak, eylem çubuğunun hala saklanmadığını gördüm.

Aşağıdaki kod benim için çalışıyor:

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

ve elbette AndroidManifestdosyanızı düzenlemeyi unutma .

<activity
    android:name="YOUR_ACTIVITY_NAME"
    android:theme="@style/AppFullScreenTheme" 
/>

@nebyan çözümünüz neden çalışmıyor ve bu benim için çalışıyor mu? Sebebi nedir?
ahmet

1
<item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item>temanızın .NoActionBar
içerip içermediğini

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

Yukarıdaki xml dosyasını style.xml dosyasında kullanarak, başlığı ve işlem çubuğunu gizleyebilirsiniz.


12

Android 4.0 (API seviye 14) sürümlerinden önce ve sonra sorunlar ortaya çıkıyor.

dan burada ben kendi çözümünü yaratmıştır.

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

Bu kodu onResume () yönteminde yazıyorum çünkü uygulamanızdan çıkıp yeniden açarsanız, eylem çubuğu etkin kalır! (ve böylece bu sorunu çözer)

Umarım yardımcı olmuştur;)


Kullanıcı durum çubuğunu manuel olarak çekerse, kendini yeniden ısıtmayacağına dikkat edin. Daha da kötüsü, yazılım klavyesi gösteriliyorsa, durum çubuğu otomatik olarak tekrar tekrar gösterilir ve yeniden gösterilmez.
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

Aşağıdaki adımı takip edebilirsiniz: -

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

Umarım yardımcı olur .. Teşekkürler !!


4

Bu olmalı = ebeveyn "tarzı @ / 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>

Sadece bu çözüm aslında başlık çubuğunu gizler ve tamamen tam ekran yapar. Doğru çözüm olarak işaretlenmelidir. Teşekkürler!
Darko Maksimovic

3

Hem durum çubuğunu hem de işlem çubuğunu gizlemek ve etkinliğinizi tam ekran yapmak için etkinliğinizde onResume()veya onWindowFocusChanged()yönteminde aşağıdaki kodu kullanın :

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

Aşağıdaki bağlantılarda daha fazla Bilgi bulabilirsiniz:

Not: Bu konudaki xml çözümlerini kullanarak gezinme çubuğunu değil, yalnızca durum çubuğunu gizleyebilirim.


1
Teşekkürler, gezinti çubuğunu gizleyen tek kişi bu! Bu yanıtı şiddetle tavsiye ederim.
Maharkus


2

Bu tema yalnızca API 21'den (dahil) sonra çalışır. Hem StatusBar'ı hem de NavigationBar'ı şeffaf hale getirin.

<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

AppCompat'ta başlık çubuğunu kaldırmak için:

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

1

Aşağıdakileri deneyebilirsiniz :

<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
Lütfen kodu açıklayın, eğer sağlıyorsanız, kodunuzu anlamanıza yardımcı olur ve gelecekteki sorunlar hakkında bilgi edinmenize yardımcı olabilir.
Lepidopteron

0

sadece bu ?

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

0

Sadece bu adamlara Tarzınıza:

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