Android : 특정 활동에서 ActionBar를 숨기는 방법


93

스플래시 화면,지도 및 일부 일반 화면이있는 간단한 데모 애플리케이션을 개발했습니다.

상단에 로고가있는 작업 표시 줄이 있습니다. 내 전화 (Galaxy s1 I9000 V2.3)에서는 모두 괜찮아 보이지만 Galaxy s2 v4에서 테스트하면 스플래시 화면과지도 화면에도 작업 표시 줄이 나타납니다.

spalsh 및 map 활동은 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>하면 모든 화면에서 숨기지 않습니까?
Tomer

귀하의 필요에 더 적합한 내 답변을 업데이트하십시오.
Si8

130

특정 활동 에서 숨기는 방법에 대해 질문 할 때 다음이 필요합니다.

getSupportActionBar().hide(); 

32

1. manifest.xml파일 로 이동 합니다.

2. Find(가) activity tag있는 당신이 다음 액션 바 등을 숨기려는 add,

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

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

//이 코드를 자바 파일에 추가

    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 시스템 버전에 따라 다르게 작동 합니다. 대조적으로 최신 기능은 지원 라이브러리의 Toolbar 버전에 추가되며 지원 라이브러리 를 사용할 수있는 모든 기기에서 사용할 수 있습니다.

따라서 한 가지 옵션은 App 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.