【问题标题】:How to create Android application without ActionBar using new theme in API9?如何使用 API9 中的新主题创建没有 ActionBar 的 Android 应用程序?
【发布时间】:2014-08-21 16:02:16
【问题描述】:

我需要创建没有操作栏的应用程序。我将尝试解释我是如何创建应用程序的(可能我遗漏了一些步骤)。

1.我故意不选择“带有深色操作栏的全息灯”选项。我认为这使应用程序没有操作栏。 2.保留下一页为默认: 3.保留下一页为默认: 4.在下一页,它变得有趣。空白活动的描述说它创建了一个新的空白活动一个操作栏。关于 Empty Activity 的描述:创建一个新的空 Activity。所以我选择空活动

5.保留下一页为默认值。

结果:和往常一样,应用程序是使用 ActionBar 创建的。

试过这个解决方案:getActionBar().hide();。在此解决方案中,ActionBar 会在几毫秒后隐藏。

尝试在 AndroidManifest.xml->application 标签中使用 android:theme="@android:style/Theme.NoTitleBar"。但在此解决方案中,应用程序使用旧主题。

我的问题:如何使用新主题创建没有 ActionBar 的 Android 应用程序并启用 StatusBar?

PS。我记得大约一年前,在 Eclipse 中,应用程序是在没有 ActionBar 的情况下创建的。然后我们手动添加了

【问题讨论】:

  • 在清单文件中试试这个:android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
  • 只需将public class MainActivity extends ActionBarActivity 更改为public class MainActivity extends Activity 或从清单中更改
  • 由于您的最小应用程序目标,android:theme 可能无法正常工作。见here
  • @BatuhanC MainActivity.java 默认是这样的:public class MainActivity extends Activity
  • @user3819810,如果我使用 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"。正如我在屏幕截图中显示的那样,应用程序正在使用旧主题

标签: android eclipse android-actionbar


【解决方案1】:

在您的活动的onCreate 方法中将其放在super.onCreate(savedInstanceState); 之后:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

确保将其放在this.setContentView(R.layout.activity_example); 之前以避免崩溃

【讨论】:

  • 感谢您的回答和宝贵的时间。但是这个选项禁用状态栏(通知栏)。
【解决方案2】:

当您的项目启动时,您可以使用公共活动扩展 Activity 而不是使用 ActionBarActivity 这也将删除操作栏或有其他方式

    <android:theme="@android:style/Theme.NoTitleBar">

或者您可以查看这些链接,它们可能会有所帮助

How to hide action bar before activity is created, and then show it again?

Remove android default action bar

【讨论】:

  • 正如我在问题中所描述的(“尝试在 AndroidManifest.xml-> 应用程序标签中使用 android:theme="@android:style/Theme.NoTitleBar”。但在此解决方案中,应用程序使用旧主题."),这使得 App 使用旧主题
  • picpaste.com/Screenshot_2014-08-21-11-58-43-AA6TRgPY.png
  • @JoeRichard 您希望您的应用在没有操作栏的情况下喜欢这张照片吗?
  • @JoeRichard 我在答案中应用了第一个链接中给出的代码,但没有操作栏。试试这个 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_ACTION_BAR); getActionBar().hide(); setContentView(R.layout.splash);
  • 你误解了我的意思。我不需要旧主题(如屏幕截图所示)。如何使用这样的新主题同时删除 ActionBar?
【解决方案3】:

参考此代码并根据您的要求进行更改:

更新:

styles.xml:

 <style name="FullscreenTheme" parent="android:Theme.Holo">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowBackground">@null</item>
    <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
    <item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
</style>

<style name="FullscreenActionBarStyle" parent="android:Widget.Holo.ActionBar">
    <item name="android:background">@color/black_overlay</item>
</style>

这些将删除操作栏并保持您的主题不变。

注意:这里我使用 Theme.Holo 进行了测试。你可以使用你的。

AndroidManifest.xml

  <activity
        android:name=".GridViewExample"
        android:theme="@style/FullscreenTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

它在没有 ActionBar 的情况下为您提供活动。 希望这能解决您的问题。

【讨论】:

  • 正如我在问题中所描述的(“尝试在 AndroidManifest.xml-> 应用程序标签中使用 android:theme="@android:style/Theme.NoTitleBar”。但在此解决方案中,应用程序使用旧主题."),这使得 App 使用旧主题
【解决方案4】:

您可以通过编程方式完成:

public class ActivityName extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // remove title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
}

或者你可以通过你的 AndroidManifest.xml 文件来做:

<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

编辑:

如果您的应用使用任何其他主题,请使用相应的主题名称,例如白色主题@android:style/Theme.Holo.Light.NoActionBar.Fullscreen

【讨论】:

  • 此方法有效。因为这个:android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 应用程序将使用旧主题。如何通过使用新主题来使用此方法?有可能吗?
  • 如果您的应用使用任何其他主题,请使用相应的主题名称,例如对于白色主题@android:style/Theme.Holo.Light.NoActionBar.Fullscreen
  • 像这样尝试过 android:theme="@style/Theme.AppCompat.Light.NoActionBar.Fullscreen"。它给出了这个错误:错误:错误:找不到与给定名称匹配的资源(在'主题',值为'@style/ Theme.AppCompat.Light.NoActionBar.Fullscreen')。
  • @android:style/Theme.Holo.Light.NoActionBar.Fullscreen 需要 API13+。我需要 API9+
猜你喜欢
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
相关资源
最近更新 更多