使用ActionBarCompat和supportRequestWindowFeature(Window.FEATURE_NO_TITLE)时,我不确定预期的行为。我看到两种不同的行为,具体取决于Android版本:
一些其他信息:我的活动扩展了android.support.v7.app.ActionBarActivity,我的应用程序使用@ style / Theme.AppCompat.Light主题。在setContentView()之前调用supportRequestWindowFeature(Window.FEATURE_NO_TITLE)。我从不对getSupportActionBar()。show()或hide()。
进行任何调用那么,预期的行为是什么?当我使用ABS时,无论Android版本如何,对requestWindowFeature(Window.FEATURE_NO_TITLE)的调用都会隐藏标题栏/操作栏。
我如何使用Android应用程序,其中一些活动使用动作栏而其他人没有?他们不应该扩展相同的基类吗?
答案 0 :(得分:0)
所以我找到了一个解决方案,但它使用通过AndroidManifest应用的样式(因此不需要代码)。请注意,这几乎肯定只有在您使用AppCompat library时才有效。
<?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>
请注意我是如何将<application>
标记的全局主题应用目录,以及通过其MainActivity
标记单独应用于<activity>
类的主题。这是我希望隐藏Action Bar的唯一Activity。在其他地方我希望它是可见的(这就是为什么我没有将个别主题应用于我的任何其他活动,因为我让它们从全局应用程序主题继承)。
但你会很快发现Theme.AppCompat.Light.NoActionBar
实际上并不存在。这是因为我必须自己创建该样式,这需要两个不同的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>
<?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 API version 11之前android:windowActionBar
标记不存在。