所以我已经找到了解决办法,但它使用应用在 AndroidManifest 中的样式(因此不需要代码)。请记住,这几乎肯定只适用于您正在使用 AppCompat 库。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="..."
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="19" />
<application
android:allowBackup="false"
android:icon="@drawable/launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
<activity
android:label="@string/log_in"
android:name=".activities.LogInActivity"
android:parentActivityName=".activities.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activities.MainActivity" />
</activity>
<activity
android:label="@string/app_name"
android:name=".activities.MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="@string/sign_up"
android:name=".activities.SignUpActivity"
android:parentActivityName=".activities.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activities.MainActivity" />
</activity>
</application>
</manifest>
请注意,我已经将全局主题应用到了标签中,并且还将主题单独应用到了我的MainActivity类中,通过其自己的标签。这是我想要隐藏操作栏的唯一活动;在其他地方,我希望它可见(这就是为什么我没有将个别主题应用于任何其他活动,而是让它们从全局应用程序主题继承)。
但是你很快会发现Theme.AppCompat.Light.NoActionBar实际上不存在。这是因为我不得不自己创建该样式,这需要两个不同的styles.xml文件:
values/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.AppCompat.Light.NoActionBar" parent="Theme.AppCompat.Light">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
values-v11/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.AppCompat.Light.NoActionBar" parent="Theme.AppCompat.Light">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
在这种情况下,您必须使用两个不同的styles.xml
文件,因为android:windowActionBar
标志在Android API version 11之前不存在。