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>

MapActivity definition (it's a long one so i included just the definition):

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


}


}
219816 次浏览

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>

您可以使用低调模式 看这里

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

当你问如何在 某些活动藏起来,这是你需要的:

getSupportActionBar().hide();

ActionBar通常沿着 Fragments存在,所以从 Activity可以隐藏它

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

and from the Fragment you can do it

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

1. 转到 manifest.xml文件。

要隐藏动作条的 activity tag,然后是 add,

主题 = “@style/Theme. AppCompat.NoActionBar”

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

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

If you want to get full screen without actionBar and 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>

并在 activity 中使用页面的样式。

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

以上的答案将有助于解决 ActionBar 的问题。要添加到它,请使用以下代码,以防您使用 Splash Screen: 在设置内容视图之前使用此选项:

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

这将使你的屏幕成为一个全屏,即删除顶部的酒吧,你看到的网络酒吧等

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

如果有问题,切换到线性布局(因为这是测试代码的基础)

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

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

希望这个能帮上忙。

来自 给你:

从 Android 3.0(API 级别11)开始,所有使用默认主题的活动都有一个 ActionBar 作为应用程序栏。然而,通过不同的 Android 版本,应用程序栏功能已经逐渐被添加到本地 ActionBar 中。因此,the native ActionBar behaves differently depending on what version of the Android system a device may be using。相比之下,最新的特性被添加到支持库的 工具栏版本中,它们可以在任何可以使用支持库的设备上使用。

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

(请按以上连结逐步了解详情)

在 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 中应用以下内容

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

替换 AndroidManifest.xml

android:theme="@style/FullscreenTheme"

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

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

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

Padding Issue creating a white space on top of fragment window / app window

Padding Issue creating a white space on top of fragment window / app window

一旦您删除了填充顶部值自动删除空白。

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

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

第一颊主要活动的活动标签,喜欢-

Public 类 MainActivity 扩展了 AppCompatActivity

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

主题 = “@style/Theme. AppCompat. Light.NoActionBar”

活动标签

用于在活动中有选择地隐藏 Actionbar:

Add the following code to onCreate (preferably on the last line of the function)

科特林:

supportActionBar?.hide()

Java:

getSupportActionBar().hide();

如果您的活动扩展了 AppCompatActivity,那么您可以添加这一行 GetSupportActionBar () . hide () ; before < strong > setContentView ()

@Override
public void onResume() {
super.onResume();
getSupportActionBar().hide();
}


@Override
public void onStop() {
super.onStop();
getSupportActionBar().show();
}