2013-10-23 32 views
59

我已經開發了一個簡單的演示應用程序,其中包含啓動畫面,地圖和一些常規畫面。Android:如何隱藏某些活動的ActionBar

我在頂部有一個包含徽標的操作欄。這在我的手機(Galaxy s1 I9000 V2.3)上看起來很好,但是當我在Galaxy s2 v4上測試時,操作欄也會出現在啓動畫面和地圖畫面中。

spalsh和地圖活動甚至沒有從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); 

    } 

} 

回答

93

適用於以下的主題活動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

,如果我的行爲不是從'ActionBarActivity' – Tomer

+0

繼承我不能用'getActionBar'使用' false'不會將它隱藏在所有屏幕上? – Tomer

+0

更新我的答案,應該更適合您的需求。 – Si8

5

您可以使用薄型模式 See here

只要搜索SYSTEM_UI_FLAG_LOW_PROFILE也變暗的導航按鈕,如果它們存在屏幕。

+0

+1向我介紹這:),我會首先檢查@ SiKni8解決方案,因爲我更喜歡非編碼解決方案 – Tomer

+1

沒問題,我發現它非常適用於在我的應用程序中顯示全屏地圖,對我來說真的很好。 –

73

當你在問如何隱藏某個活動時,我想.hide();是你所需要的

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

getSupportActionBar().hide(); 
or 
getActionBar().hide(); 
12

ActionBar通常沿着Fragments存在這樣從Activity可以將其隱藏

getActionbar().hide(); 
getActionbar().show(); 

,並從Fragment你可以做到這一點

getActivity().getActionbar().hide(); 
getActivity().getActionbar().show(); 
+5

我使用:'getSupportActionBar()。hide();' in ActionBarActivity –

18

1.轉到manifest.xml文件。

2. Find您要隱藏你的動作條,然後addactivity tag

機器人:主題= 「@風格/ Theme.AppCompat.NoActionBar」

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

如果您使用的是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> 
8

如果你想得到沒有actionBar和標題的全屏。

添加它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> 
3

上述答案將有助於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); 

這將使你的屏幕全屏,即去掉最上面一欄,你看到網絡酒吧等

0

這個工作在API 27

在styles.xm將代碼替換爲以下代碼....

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

如果你有問題,切換到線性佈局(因爲這是這個代碼在測試)

相關問題