Android:如何在某些活动上隐藏ActionBar

Tom*_*mer 82 java android android-actionbar

我开发了一个简单的演示应用程序,带有启动画面,地图和一些常规屏幕.

我在顶部有一个包含徽标的操作栏.它在我的手机上看起来很好(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>
Run Code Online (Sandbox Code Playgroud)

MapActivity定义(这是一个很长的定义,所以我只包括定义):

public class MapActivity extends FragmentActivity implements LocationListener
Run Code Online (Sandbox Code Playgroud)

启动活动:

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

    }

}
Run Code Online (Sandbox Code Playgroud)

Si8*_*Si8 117

在您的活动主题中应用以下内容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>
Run Code Online (Sandbox Code Playgroud)

这应该够了吧.

  • 我无法使用“getActionBar”,因为该活动不是从“ActionBarActivity”继承的 (2认同)

erl*_*man 111

当你在询问如何隐藏某项活动时; 我认为.hide(); 是你需要的

getSupportActionBar().hide(); 
Run Code Online (Sandbox Code Playgroud)

要么

getSupportActionBar().hide(); 
Run Code Online (Sandbox Code Playgroud)


Pra*_*shi 30

1.转到您的manifest.xml文件.

2. Findactivity tag您要隐藏你的动作条,然后add,

机器人:主题= "@风格/ Theme.AppCompat.NoActionBar"

           <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            >
Run Code Online (Sandbox Code Playgroud)


rez*_*e08 19

如果你想在没有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>
Run Code Online (Sandbox Code Playgroud)

并使用manifest.xml活动的样式.

<activity ....
      android:theme="@style/AppTheme.NoActionBar" > ......
</activity> 
Run Code Online (Sandbox Code Playgroud)


san*_*one 13

ActionBar通常沿着存在Fragments所以从Activity您可以将其隐藏

getActionbar().hide();
getActionbar().show();
Run Code Online (Sandbox Code Playgroud)

Fragment你可以做到

getActivity().getActionbar().hide();
getActivity().getActionbar().show();
Run Code Online (Sandbox Code Playgroud)

  • 我在ActionBarActivity中使用:`getSupportActionBar().hide();` (5认同)

jos*_*gle 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>
Run Code Online (Sandbox Code Playgroud)


小智 6

要隐藏 ActionBar,请将此代码添加到 java 文件中。

    ActionBar actionBar = getSupportActionBar();
    actionBar.hide();
Run Code Online (Sandbox Code Playgroud)


TMH*_*TMH 5

您可以使用低调模式 参见此处

SYSTEM_UI_FLAG_LOW_PROFILE如果它们出现在屏幕上,只需搜索它也会使导航按钮变暗.


Kyo*_*Huu 5

这适合我!把它放在你的活动清单中

<activity
   // ...
   android:theme="@style/Theme.AppCompat.Light.NoActionBar"
   // ...
   </activity>
Run Code Online (Sandbox Code Playgroud)

您还可以在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>
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.


小智 5

在 AndroidManifest.xml 中的 Activity 主题中应用以下内容:

<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>
Run Code Online (Sandbox Code Playgroud)

然后在 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>
Run Code Online (Sandbox Code Playgroud)