Android: cara menyembunyikan ActionBar pada aktivitas tertentu

93

Saya telah mengembangkan aplikasi demo sederhana dengan layar splash, peta dan beberapa layar biasa.

Saya memiliki bilah tindakan di bagian atas yang berisi logo. Semuanya terlihat baik-baik saja di ponsel saya (Galaxy s1 I9000 V2.3) tetapi ketika saya mengujinya di Galaxy s2 v4, bilah tindakan juga muncul di layar splash dan di layar peta.

Aktivitas spalsh dan peta bahkan tidak mewarisi dari ActionBarActivity jadi bagaimana mungkin dan bagaimana cara menghilangkannya?

Nyata:

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

Definisi MapActivity (ini panjang jadi saya hanya menyertakan definisinya):

public class MapActivity extends FragmentActivity implements LocationListener

Aktivitas Percikan:

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

    }

}
Tomer
sumber

Jawaban:

129

Terapkan yang berikut ini di Tema Anda untuk Aktivitas di 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>

Itu seharusnya berhasil.

Si8
sumber
1
Saya tidak dapat menggunakan getActionBarkarena aktivitas tidak diwarisi dariActionBarActivity
Tomer
jika saya menggunakan <item name="android:windowActionBar">false</item>bukankah itu akan menyembunyikannya di semua layar?
Tomer
Perbarui jawaban saya yang seharusnya lebih sesuai dengan kebutuhan Anda.
Si8
131

Saat Anda bertanya tentang cara bersembunyi di file aktivitas tertentu , inilah yang Anda butuhkan:

getSupportActionBar().hide(); 
erluxman.dll
sumber
32

1. Pergi ke manifest.xml file .

2. Findyang activity tagyang Anda ingin menyembunyikan ActionBar Anda dan kemudian add,

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

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

Jika Anda ingin mendapatkan layar penuh tanpa actionBar dan Judul.

Tambahkan di style.xml

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

dan gunakan gaya pada aktivitas manifest.xml.

<activity ....
      android:theme="@style/AppTheme.NoActionBar" > ......
</activity> 
reza.cse08
sumber
15

The ActionBarbiasanya ada di sepanjang Fragmentssehingga dari ActivityAnda dapat menyembunyikannya

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

dan dari FragmentAnda bisa melakukannya

getActivity().getActionBar().hide();
getActivity().getActionBar().show();
sandalone
sumber
6
Saya menggunakan: getSupportActionBar().hide(); di ActionBarActivity
Ihab Shoully
8

Jika Anda menggunakan Theme.AppCompat.Light, padanan yang lebih baik adalah Theme.AppCompat.Light.NoActionBar.

Saya menemukan bahwa menggunakan Theme.AppCompat.NoTitleBar menyebabkan teks tombol saya tidak terlihat jadi saya menggunakan Theme.AppCompat.Light.NoActionBar.

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

Ini berhasil untuk saya! Taruh ini di Aktivitas Anda dalam manifes

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

Anda juga dapat membuat tema kustom Anda di styles.xml seperti ini:

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

Semoga bantuan ini.

Kyo Huu
sumber
5

Anda dapat menggunakan mode Profil Rendah Lihat di sini

Cari saja SYSTEM_UI_FLAG_LOW_PROFILEitu juga meredupkan tombol navigasi jika ada di layar.

TMH
sumber
+1 untuk memperkenalkan saya pada ini :), saya akan memeriksa solusi @ SiKni8 terlebih dahulu karena saya lebih memilih solusi non-coding
Tomer
1
Tidak masalah, menurut saya ini sangat berguna untuk menampilkan peta layar penuh di aplikasi saya, bekerja sangat baik untuk saya.
TMH
4

Jawaban di atas akan membantu hal ActionBar. Untuk menambahkannya, gunakan kode berikut jika Anda menggunakan Splash Screen: Gunakan ini sebelum Anda mengatur tampilan konten:

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

Hanya untuk memperjelas, berikut cara Anda melakukannya:

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

Ini akan membuat layar Anda menjadi layar penuh, yaitu menghapus bilah atas tempat Anda melihat bilah jaringan, dll

BlueLeaf
sumber
4

Terapkan yang berikut ini di Tema Anda untuk Aktivitas di AndroidManifest.xml:

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

Kemudian Terapkan yang berikut ini dalam Gaya Anda di style.xml

<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>
Kanaiyalal Badal
sumber
2

// Sembunyikan ActionBar di atas

// Tambahkan kode ini ke dalam file java

    ActionBar actionBar=getSupportActionBar();
    actionBar.hide();
Ajay Patel
sumber
1

Ini berfungsi di API 27

Di styles.xml ganti kode ke yang berikut ini ....

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

Kemudian di file (mis. Activity_list.xml) di mana Anda ingin memiliki toolbar, masukkan kode berikut.

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

Jika Anda memiliki masalah beralih ke tata letak linier (karena kode ini diuji pada)

Naga api
sumber
1

Dari sini :

Mulai Android 3.0 (API level 11), semua aktivitas yang menggunakan tema default memiliki ActionBar sebagai bilah aplikasi. Namun, fitur bilah aplikasi telah ditambahkan secara bertahap ke ActionBar asli pada berbagai rilis Android. Akibatnya, ActionBar asli berperilaku berbeda bergantung pada versi sistem Android yang mungkin digunakan perangkat . Sebaliknya, fitur terbaru ditambahkan ke Toolbar versi pustaka dukungan , dan fitur tersebut tersedia di perangkat apa pun yang dapat menggunakan pustaka dukungan.

Jadi salah satu opsinya adalah menonaktifkan ActionBar sepenuhnya (di file manifest.xml aplikasi) dan kemudian menambahkan Toolbar di setiap halaman yang membutuhkan ActionBar.

(ikuti tautan di atas untuk penjelasan langkah demi langkah)

LoMaPh
sumber
0

Ganti AndroidManifest.xml

android:theme="@style/FullscreenTheme"

untuk

android:theme="@style/Theme.Design.NoActionBar"
Tarik Billa
sumber
0

Tambahkan Gaya Baru di style.xml Anda

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

dan kemudian tambahkan baris berikut di manifes Anda

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

Periksa atribut padding jika masalah masih ada setelah mengganti tema.

Masalah Padding membuat ruang putih di atas jendela fragmen / jendela aplikasi

Masalah Padding membuat ruang putih di atas jendela fragmen / jendela aplikasi

Setelah Anda menghapus padding - nilai teratas secara otomatis ruang putih dihapus.

Aravindhan Kumar
sumber