Android:特定のアクティビティでActionBarを非表示にする方法


93

私は、スプラッシュスクリーン、マップ、およびいくつかの通常のスクリーンを備えたシンプルなデモアプリケーションを開発しました。

上部にロゴを含むアクションバーがあります。私の電話(Galaxy s1 I9000 V2.3)ではすべて問題なく見えますが、Galaxy s2 v4でテストすると、スプラッシュ画面とマップ画面にもアクションバーが表示されます。

スパルシュアクティビティとマップアクティビティはActionBarActivityからも継承していないので、それをどのようにして可能にし、どうすればそれを解消できますか?

マニフェスト:

<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定義(長い定義なので、定義のみを含めました):

public class MapActivity extends FragmentActivity implements LocationListener

スプラッシュアクティビティ:

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

    }

}

回答:


127

のアクティビティのテーマに以下を適用します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>

これでうまくいくはずです。


1
getActionBarアクティビティが継承していないため使用できませんActionBarActivity
Tomer

使用<item name="android:windowActionBar">false</item>すると、すべての画面で非表示になりますか?
2013年

あなたのニーズにより適した私の答えを更新してください。
Si8 2013年

130

特定のアクティビティでどのように非表示にするかについて質問しているときに、これが必要です。

getSupportActionBar().hide(); 

32

1. manifest.xmlファイルに移動します。

2. あなたは、あなたのアクションバーとを非表示にしたいです、Findactivity tagadd

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

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

21

actionBarとTitleなしでフルスクリーンを取得したい場合。

それを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>

manifest.xmlのアクティビティでスタイルを使用します。

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

15

ActionBar通常に沿って存在しているFragmentsから、そうActivity、あなたがそれを隠すことができます

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

そしてFragmentあなたからそれを行うことができます

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

6
私が使用します。getSupportActionBar().hide(); ActionBarActivityに
Ihab Shoully

8

Theme.AppCompat.Lightを使用している場合、より適切なものはTheme.AppCompat.Light.NoActionBarです。

Theme.AppCompat.NoTitleBarを使用するとボタンのテキストが非表示になるので、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>

7

これは私にとってはうまくいきます!これをマニフェストのアクティビティに入れます

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

次のように、styles.xmlでカスタムテーマを作成することもできます。

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

この助けを願っています。


5

ロープロファイルモード使用できます ここを参照してください

それを検索するだけでSYSTEM_UI_FLAG_LOW_PROFILE、ナビゲーションボタンが画面に表示されている場合は、ボタンが暗くなります。


私にこれを紹介するための+1 :)、私は非コーディングソリューションを好むので、最初に@ SiKni8ソリューションを確認します
Tomer

1
問題ありません。アプリで全画面の地図を表示するのにとても便利で、とてもうまくいきました。
TMH 2013年

4

上記の回答は、ActionBarに役立ちます。これに追加するには、スプラッシュスクリーンを使用している場合は次のコードを使用します。コンテンツビューを設定する前にこれを使用します。

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

明確にするために、ここではその方法を示します。

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

これにより、画面が全画面になります。つまり、ネットワークバーが表示されているトップバーを削除します。


4

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>

次に、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>

2

//上にあるActionBarを非表示にします

//このコードをJavaファイルに追加します

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

1

これはAPI 27で機能します

styles.xmlで、コードを次のように置き換えます。

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

次に、ツールバーを作成するファイル(例:activity_list.xml)に次のコードを挿入します。

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

線形レイアウトへの切り替えに問題がある場合(これがこのコードのテスト対象であるため)


1

ここから:

Android 3.0(APIレベル11)以降、デフォルトのテーマを使用するすべてのアクティビティには、アプリバーとしてのActionBarがあります。ただし、アプリバーの機能は、さまざまなAndroidリリースでネイティブActionBarに徐々に追加されています。その結果、ネイティブActionBarの動作は、デバイスが使用しているAndroidシステムのバージョンによって異なります。対照的に、最新の機能はサポートライブラリのバージョンのツールバーに追加され、サポートライブラリを使用できるすべてのデバイスで利用できます。

したがって、1つのオプションは、(アプリのmanifest.xmlファイルで)ActionBarを完全に無効にし、ActionBarを必要とするすべてのページにToolbarを追加することです。

(段階的な説明については、上記のリンクをたどってください)


0

AndroidManifest.xmlを置き換える

android:theme="@style/FullscreenTheme"

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

0

style.xmlに新しいスタイルを追加する

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

マニフェストに次の行を追加します

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

0

テーマを変更しても問題が解決しない場合は、パディング属性を確認してください。

フラグメントウィンドウ/アプリウィンドウの上に空白を作成するパディングの問題

フラグメントウィンドウ/アプリウィンドウの上に空白を作成するパディングの問題

パディングを削除すると、先頭の値が自動的に空白が削除されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.