Android: belirli etkinliklerde ActionBar nasıl gizlenir


96

Bir açılış ekranı, bir harita ve bazı normal ekranlar içeren basit bir demo uygulaması geliştirdim.

Üstte logo içeren bir işlem çubuğum var. Telefonumda her şey yolunda görünüyor (Galaxy s1 I9000 V2.3) ancak Galaxy s2 v4'te test ettiğimde işlem çubuğu açılış ekranında ve harita ekranında da görünüyor.

Spalsh ve harita etkinliği ActionBarActivity'den miras bile almıyor, bu yüzden bu nasıl mümkün ve onu nasıl ortadan kaldırabilirim?

Belirgin:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/Theme.AppCompat.Light" >
        <activity
            android:name=".HomeActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >

            <!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            -->
        </activity>
        <activity
            android:name=".MapActivity"
            android:label="" >
        </activity>
        <activity
            android:name=".PackageActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >
        </activity>
        <activity
            android:name=".SplashActivity"
            android:label="" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

MapActivity tanımı (uzun bir tanesidir, bu yüzden sadece tanımı dahil ettim):

public class MapActivity extends FragmentActivity implements LocationListener

Sıçrama Etkinliği:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;

public class SplashActivity extends Activity{

    private static final long SPLASH_DISPLAY_LENGTH = 2000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                Intent mainIntent = new Intent(SplashActivity.this,HomeActivity.class);
                SplashActivity.this.startActivity(mainIntent);
                SplashActivity.this.finish();
            }
        }, SPLASH_DISPLAY_LENGTH);

    }

}

Yanıtlar:


129

Aktivite için Temanıza aşağıdakileri uygulayın AndroidManifest.xml:

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Bu hile yapmalı.


1
Ben kullanamaz getActionBaretkinlik devralma değil gibiActionBarActivity
Tömer'de

eğer kullanırsam <item name="android:windowActionBar">false</item>bu onu tüm ekranlarda gizlemez mi?
Tomer

İhtiyacınız için daha uygun olması gereken cevabımı güncelleyin.
Si8

137

Eğer konusunda soruyorsunuz gibi sakla bir de belli aktivite , bu neye ihtiyacınız:

getSupportActionBar().hide(); 

33

1. manifest.xmlDosyanıza gidin .

2. kendisi için daha sonra İşlem Çubuğu ve gizlemek istediğiniz ,Findactivity tagadd

android: theme = "@ style / Theme.AppCompat.NoActionBar"

           <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            >

21

ActionBar ve Title olmadan tam ekran elde etmek istiyorsanız.

Style.xml dosyasına ekleyin

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

ve stili manifest.xml etkinliğinde kullanın.

<activity ....
      android:theme="@style/AppTheme.NoActionBar" > ......
</activity> 

15

ActionBarGenellikle boyunca var olan Fragmentsbu kadar Activitygizleyebilirsiniz

getActionBar().hide();
getActionBar().show();

ve Fragmentsenden yapabilirsin

getActivity().getActionBar().hide();
getActivity().getActionBar().show();

6
getSupportActionBar().hide();
Kullanıyorum

8

Theme.AppCompat.Light kullanıyor olsaydınız, daha iyi bir eşdeğer Theme.AppCompat.Light.NoActionBar olacaktır.

Theme.AppCompat.NoTitleBar'ı kullanmanın düğme metnimin görünmez olmasına neden olduğunu buldum, bu yüzden Theme.AppCompat.Light.NoActionBar'ı kullanıyorum.

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.AppCompat.Light.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

7

Bu benim için çalışıyor! Bunu faaliyetinize manifestolar halinde koyun

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

Ayrıca, özel temanızı styles.xml dosyasında şu şekilde yapabilirsiniz:

<style name="Theme.MyCustomTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name = "android:windowActionBar">false</item>
        <item name = "android:windowNoTitle">true</item>
        // more custom...
    </style>

Umarım bu yardımcı olur.


5

Düşük Profil modunu kullanabilirsiniz Buraya bakın

Sadece bunu arayın SYSTEM_UI_FLAG_LOW_PROFILE, ekranda varsa gezinme düğmelerini de karartır.


Beni buna tanıtmak için +1 :), kodlamayan çözümü tercih ettiğim için önce @ SiKni8 çözümünü kontrol edeceğim
Tomer

1
Sorun değil, uygulamamda tam ekran bir harita görüntülemek için gerçekten yararlı buldum, benim için gerçekten iyi çalışıyor.
TMH

5

ActionBar'ı gizlemek için bu kodu java dosyasına ekleyin.

    ActionBar actionBar = getSupportActionBar();
    actionBar.hide();

4

Yukarıdaki cevaplar ActionBar olayına yardımcı olacaktır. Buna eklemek için, Açılış Ekranını kullanmanız durumunda aşağıdaki kodu kullanın: İçerik görünümünü ayarlamadan önce bunu kullanın:

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

Sadece açıklığa kavuşturmak için, işte bunu nasıl yapıyorsunuz:

    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);         
    setContentView(R.layout.activity_main);

Bu, ekranınızı tam ekran yapar, yani ağ çubuğunu gördüğünüz yerdeki üst çubuğu kaldırır, vb.


4

AndroidManifest.xml'deki Aktivite Temanıza aşağıdakileri uygulayın:

<activity android:name=".DashboardActivity"
        android:theme="@style/AppFullScreenTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Ardından, style.xml'deki Stilinize aşağıdakileri uygulayın

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

1

Bu API 27'de çalışır

Styles.xml'de kodu şu şekilde değiştirin ....

<resources>
    <!-- No Action Bar -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

Daha sonra bir araç çubuğuna sahip olmak istediğiniz dosyalarda (örn. Activity_list.xml) aşağıdaki kodu girin.

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/colorPrimary"/>

Sorun yaşıyorsanız doğrusal düzene geçin (çünkü bu kodun test edildiği şey budur)


1

Gönderen burada :

Android 3.0'dan (API seviyesi 11) başlayarak, varsayılan temayı kullanan tüm etkinliklerin uygulama çubuğu olarak bir ActionBar'ı vardır. Ancak, uygulama çubuğu özellikleri, çeşitli Android sürümleri üzerinden aşamalı olarak yerel ActionBar'a eklenmiştir. Sonuç olarak yerel ActionBar, bir cihazın kullandığı Android sistemi sürümüne bağlı olarak farklı davranır . Buna karşılık, en yeni özellikler, destek kitaplığının Araç Çubuğu sürümüne eklenir ve destek kitaplığını kullanabilen herhangi bir cihazda kullanılabilir.

Bu nedenle seçeneklerden biri, ActionBar'ı tamamen devre dışı bırakmak (app manifest.xml dosyasında) ve ardından ActionBar gerektiren her sayfaya Araç Çubuğu eklemektir.

(adım adım açıklama için yukarıdaki bağlantıyı izleyin)


0

AndroidManifest.xml'yi değiştirin

android:theme="@style/FullscreenTheme"

-e

android:theme="@style/Theme.Design.NoActionBar"

0

Style.xml dosyanıza Yeni Stil ekleyin

<!-- 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="LoginTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

ve sonra manifestinize aşağıdaki satırı ekleyin

<activity android:name=".Login"
        android:label="@string/app_name"
        android:theme="@style/LoginTheme"
        >

0

Temayı değiştirdikten sonra sorun devam ederse, dolgu özniteliğini kontrol edin.

Parça penceresinin / uygulama penceresinin üstünde beyaz boşluk oluşturma Dolgu Sorunu

Parça penceresinin / uygulama penceresinin üstünde beyaz boşluk oluşturma Dolgu Sorunu

Dolguyu kaldırdığınızda - üst değer otomatik olarak beyaz boşluk kaldırılır.


0

Etkinlik etiketi için ilk yanak MainActivity, Beğen -

public class MainActivity uzanır AppCompatActivity

Sonra menifest xml dosyasına gidin ve yazın-

android: theme = "@ style / Theme.AppCompat.Light.NoActionBar"

etkinlik etiketinde

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.