115

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

我在顶部有一个包含徽标的操作栏。在我的手机(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);

    }

}
4

21 回答 21

160

当您询问如何隐藏某个活动中时,这就是您所需要的:

getSupportActionBar().hide(); 
于 2014-03-11T23:24:11.323 回答
138

在您的主题中为活动应用以下内容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>

这应该够了吧。

于 2013-10-23T15:04:07.437 回答
42

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

2.你想隐藏你的ActionBar,Find然后,activity tagadd

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

           <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            >
于 2015-07-01T03:18:19.060 回答
25

如果您想在没有 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> 
于 2015-11-06T15:01:20.083 回答
15

ActionBar通常存在,因此FragmentsActivity可以隐藏它

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

Fragment你可以做到

getActivity().getActionBar().hide();
getActivity().getActionBar().show();
于 2014-10-02T16:33:35.187 回答
9

这对我有用!把它放在你的活动清单中

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

希望这有帮助。

于 2018-03-20T02:18:21.940 回答
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>
于 2015-07-09T22:27:55.333 回答
7

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

    ActionBar actionBar = getSupportActionBar();
    actionBar.hide();
于 2020-06-28T14:38:41.517 回答
5

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

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

于 2013-10-23T15:05:43.723 回答
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);

这将使您的屏幕成为全屏,即删除您看到网络栏的顶部栏等

于 2015-11-26T15:40:05.847 回答
4

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

然后在 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>
于 2019-01-23T17:34:44.683 回答
2
@Override
    public void onResume() {
        super.onResume();
        getSupportActionBar().hide();
    }

    @Override
    public void onStop() {
        super.onStop();
        getSupportActionBar().show();
    }
于 2021-04-25T22:22:39.080 回答
1

这里

从 Android 3.0(API 级别 11)开始,所有使用默认主题的活动都有一个 ActionBar 作为应用栏。然而,应用栏功能已逐渐添加到各种 Android 版本的原生 ActionBar 中。因此,本机 ActionBar 的行为会根据设备可能使用的 Android 系统版本而有所不同。相比之下,最新的功能被添加到支持库的Toolbar版本中,并且可以在任何可以使用支持库的设备上使用。

因此,一种选择是完全禁用 ActionBar(在应用 manifest.xml 文件中),然后在每个需要 ActionBar 的页面中添加 Toolbar。

(按照上面的链接进行分步说明)

于 2018-06-07T02:44:03.320 回答
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"/>

如果您有问题切换到线性布局(因为这是测试此代码的内容)

于 2018-01-18T04:11:48.973 回答
1

在活动中选择性地隐藏 Actionbar:

将以下代码添加到 onCreate 中(最好在函数的最后一行)

科特林:

supportActionBar?.hide()

爪哇:

getSupportActionBar().hide();

于 2021-02-18T18:36:12.877 回答
0

替换 AndroidManifest.xml

android:theme="@style/FullscreenTheme"

android:theme="@style/Theme.Design.NoActionBar"
于 2019-05-28T19:33:35.327 回答
0

如果您的活动扩展了AppCompatActivity那么您可以添加这一行 super.getSupportActionBar().hide(); setContentView()之前

于 2021-04-01T06:04:03.243 回答
0
android:theme="@style/Theme.MaterialComponents.Light.NoActionBar"

这对我有用

于 2021-08-11T21:11:28.460 回答
0

活动标签的第一个脸颊 MainActivity,喜欢 -

公共类 MainActivity 扩展AppCompatActivity

然后转到menifest xml文件并写入-

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

在活动标签中

于 2020-12-09T21:40:57.570 回答
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"
        >
于 2019-11-28T04:07:08.013 回答
0

如果更改主题后问题仍然存在,请检查填充属性。

在片段窗口/应用程序窗口顶部创建空白的填充问题

在片段窗口/应用程序窗口顶部创建空白的填充问题

删除填充 - 顶部值后,空格会自动删除。

于 2019-12-03T05:11:20.650 回答