我保证这不是一个重复的问题。我已经看到了关于这个主题的一些其他问题,但它们似乎都在使用appCompat,而且没有人回答我的问题。
我遇到了一个问题,如果我使用Material主题Theme.Material.Light针对AOSP中的v21 API进行编译,我无法显示操作栏。所有东西都看起来非常实用,但没有动作栏。
Build.VERSION.SDK_INT
和Build.VERSION.RELEASE
。结果分别为21
和5.0.1
。Theme.Material.Light.DarkActionBar
没有操作栏。 Theme.Material.NoActionBar
显示了一个较小的类似对话框的应用程序窗口,其中没有操作栏,但有一个顶部标题栏。 Theme.Holo.Light
显示了一个操作栏,但它为我提供了所有Holo主题图标和动画。getActionBar().show();
以编程方式获取操作栏,但获得了空指针异常。<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myApp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="21" />
<application
android:icon="@drawable/launcher"
android:label="@string/app_name" >
<service android:name=".ServiceA" >
<intent-filter>
<action android:name="com.qualcomm.listen.sva.LOCAL_SERVICE" />
<action android:name="com.qualcomm.listen.sva.REMOTE_SERVICE" />
</intent-filter>
</service>
<activity
android:name=".ux.dev.ActivityC"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:theme="@style/ThemeA.Theme" >
</activity>
<activity
android:name=".ux.dev.ActivityB"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:theme="@style/ThemeA.Theme" >
</activity>
<activity
android:name=".ux.dev.ActivityA"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@style/ThemeA.Theme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ux.dev.ActivityD"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:theme="@style/ThemeA.Theme" >
</activity>
<activity
android:name=".ux.dev.ActivityE"
android:label="@string/app_name"
android:theme="@style/ThemeA.Theme" >
</activity>
<activity
android:name=".ux.dev.ActivityF"
android:label="@string/app_name"
android:theme="@style/ThemeA.Theme" >
</activity>
<receiver android:name=".BootupReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name=".ScreenOnoffReceiver" >
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="android.intent.action.SCREEN_ON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity
android:name=".ux.user.UserActivityA"
android:label="@string/title_activity_edit_keyphrase"
android:theme="@style/AppTheme" >
</activity>
<activity
android:name=".ux.user.UserActivityB"
android:label="@string/title_activity_select_action" >
</activity>
<activity
android:name="ux.user.UserActivityC"
android:label="@string/app_name"
android:theme="@android:style/Theme.Material.Light" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
问题在于ux.user.UserActivityC没有操作栏。
答案 0 :(得分:2)
在style.xml文件中(将是style.xml(v21))
<style name="AppTheme" parent="android:Theme.Material.Light">
</style>
然后确保,您正在使用
扩展您的活动MainActivity extends ActionBarActivity
即使您使用的是android,也会显示actionBar:Theme.Material.Light
此外,建议在材质设计中使用工具栏小部件。
<android.support.v7.widget.Toolbar />
请参阅此https://stackoverflow.com/a/30400594/3498931,了解如何创建工具栏。它在Material Design中充当ActionBar。 希望它有所帮助!