Material 缺少操作栏
Material Action Bar Missing
我保证这不是重复的问题。我在这个主题上看到了很多其他类似的问题,但它们似乎都在使用 appCompat,none 回答了我的问题。
问题
我 运行 遇到一个问题,如果我使用 Material 主题 Theme.Material.Light 针对 AOSP 中的 v21 API 进行编译,我将无法显示操作栏。一切看起来都非常 material 但没有操作栏。
我试过的
- 我有应用程序输出
Build.VERSION.SDK_INT
和 Build.VERSION.RELEASE
。结果分别如预期21
和5.0.1
- 我切换到使用不同的主题。
Theme.Material.Light.DarkActionBar
没有操作栏。 Theme.Material.NoActionBar
显示了一个较小的 dialog-like window 我的应用程序,没有操作栏但有顶部标题栏。 Theme.Holo.Light
显示了一个操作栏,但它为我提供了所有 Holo 主题图标和动画。
- 我尝试使用
getActionBar().show();
以编程方式获取操作栏,但出现空指针异常。
- 我在 Eclipse 中创建了一个测试项目,其中复制了我的问题项目中的文件夹,用于值、布局和可绘制对象。测试应用程序显示操作栏。这让我认为问题不在于那些文件夹。
- 我尝试将样式移动到 AndroidManifest 以查看是否与另一个值文件夹或其他内容发生冲突,但仍然没有操作栏。
代码
<?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 没有操作栏。
在您的 style.xml 文件中(即 style.xml(v21))
<style name="AppTheme" parent="android:Theme.Material.Light">
</style>
然后确保,您正在使用
扩展您的 activity
MainActivity extends ActionBarActivity
即使您使用 android:Theme,这也会显示 actionBar。Material.Light
另外建议在material设计中使用Toolbar widget。
<android.support.v7.widget.Toolbar />
参考这个,如何创建工具栏。它在 Material 设计中充当 ActionBar。
希望对您有所帮助!
我保证这不是重复的问题。我在这个主题上看到了很多其他类似的问题,但它们似乎都在使用 appCompat,none 回答了我的问题。
问题
我 运行 遇到一个问题,如果我使用 Material 主题 Theme.Material.Light 针对 AOSP 中的 v21 API 进行编译,我将无法显示操作栏。一切看起来都非常 material 但没有操作栏。
我试过的
- 我有应用程序输出
Build.VERSION.SDK_INT
和Build.VERSION.RELEASE
。结果分别如预期21
和5.0.1
- 我切换到使用不同的主题。
Theme.Material.Light.DarkActionBar
没有操作栏。Theme.Material.NoActionBar
显示了一个较小的 dialog-like window 我的应用程序,没有操作栏但有顶部标题栏。Theme.Holo.Light
显示了一个操作栏,但它为我提供了所有 Holo 主题图标和动画。 - 我尝试使用
getActionBar().show();
以编程方式获取操作栏,但出现空指针异常。 - 我在 Eclipse 中创建了一个测试项目,其中复制了我的问题项目中的文件夹,用于值、布局和可绘制对象。测试应用程序显示操作栏。这让我认为问题不在于那些文件夹。
- 我尝试将样式移动到 AndroidManifest 以查看是否与另一个值文件夹或其他内容发生冲突,但仍然没有操作栏。
代码
<?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 没有操作栏。
在您的 style.xml 文件中(即 style.xml(v21))
<style name="AppTheme" parent="android:Theme.Material.Light">
</style>
然后确保,您正在使用
扩展您的 activityMainActivity extends ActionBarActivity
即使您使用 android:Theme,这也会显示 actionBar。Material.Light
另外建议在material设计中使用Toolbar widget。
<android.support.v7.widget.Toolbar />
参考这个