材料操作栏丢失

时间:2015-05-28 22:42:37

标签: android android-actionbar

我保证这不是一个重复的问题。我已经看到了关于这个主题的一些其他问题,但它们似乎都在使用appCompat,而且没有人回答我的问题。

问题

我遇到了一个问题,如果我使用Material主题Theme.Material.Light针对AOSP中的v21 API进行编译,我无法显示操作栏。所有东西都看起来非常实用,但没有动作栏。

我尝试过什么

  • 我有应用输出Build.VERSION.SDK_INTBuild.VERSION.RELEASE。结果分别为215.0.1
  • 我转而使用不同的主题。 Theme.Material.Light.DarkActionBar没有操作栏。 Theme.Material.NoActionBar显示了一个较小的类似对话框的应用程序窗口,其中没有操作栏,但有一个顶部标题栏。 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没有操作栏。

1 个答案:

答案 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。 希望它有所帮助!