Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我无法让Android ActionBar自定义主题正常工作(相信我,我已经尝试过了)_Android_Android Actionbar_Styles_Themes_Android Appcompat - Fatal编程技术网

我无法让Android ActionBar自定义主题正常工作(相信我,我已经尝试过了)

我无法让Android ActionBar自定义主题正常工作(相信我,我已经尝试过了),android,android-actionbar,styles,themes,android-appcompat,Android,Android Actionbar,Styles,Themes,Android Appcompat,我肯定我会因为缺乏具体性或问别人的问题而感到悲伤,但这确实是最后的选择,我真的尝试了太多的方法来解释它们。这是我的问题: 我已经阅读了developers.android.com提供的标准教程,并且我几乎没有任何问题地完成了ActionBar的样式设计。好吧,现在我正在为这些问题的缺乏而付费,我真的无法在动作栏上获得任何类型的自定义主题 事实: 我正在使用AppCompat-V7,因为我的应用程序将非常简单,并且与尽可能多的版本兼容 我可以更改基本主题(黑暗、光明和光明。DarkActionB

我肯定我会因为缺乏具体性或问别人的问题而感到悲伤,但这确实是最后的选择,我真的尝试了太多的方法来解释它们。这是我的问题:


我已经阅读了developers.android.com提供的标准教程,并且我几乎没有任何问题地完成了ActionBar的样式设计。好吧,现在我正在为这些问题的缺乏而付费,我真的无法在动作栏上获得任何类型的自定义主题

事实:

  • 我正在使用AppCompat-V7,因为我的应用程序将非常简单,并且与尽可能多的版本兼容
  • 我可以更改基本主题(黑暗、光明和光明。DarkActionBar)
  • 我尝试了Android操作栏样式生成器,并在这里跟随了这篇文章()
  • 我看了一些与我的问题/设置有关的视频,试图把它做好
  • 我尝试了各种方法(都是错误的)来让它工作,其中一些可能甚至没有意义
所以。。。怎么样

这里是我的文件,我相信是相关的,但如果有人想看到更多,请随意询问。考虑到我几乎没有看过Android教程,我没有太多要看的内容,所以我认为这很好

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="godwin.com.study" >


<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />


<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/CustomActionBarTheme" >

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="godwin.com.study.MainActivity" />
    </activity>
</application>

</manifest>
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
        parent="@style/Theme.AppCompat.Light.DarkActionBar">

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar"
        parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">

        <!-- Support library compatibility -->
        <item name="background">@drawable/actionbar_background</item>
    </style>



</resources>
可以自由提问,但要为“我不知道”做好准备。我几乎迷路了。是的,我做了很多尝试。它们相互重叠并相互干扰,因此我在文件中的内容确实有效,但行除外:

<item name="background">@drawable/actionbar_background</item>
@drawable/actionbar\u背景
themes.xml文件中。我已经将我的“actionbar_background.png”文件放入“drawable”文件夹,但它仍然只生成“…Light.darkaActionBar”主题

我真的希望这是一件简单的事情,但通过我所有的搜索,我还没有找到答案

顺便说一句:这是我第一次开发Android应用程序,或者至少尝试开发,我真的不认为Android在他们的教程中做得很好。我是说,我擅长编程。主要是用C++,还有一些java、JavaScript和Web设计语言,我大部分都能用。只是我吗?还是说进入应用程序开发领域真的很难

编辑:简单地说,我尝试了许多方法来改变带有自定义主题的actionbar的外观(无论是使用颜色代码还是images/.pngs),但唯一能改变它的方法是使用预设主题(Light、Dark和Light.DarkActionBar)


我希望能够使用我提到的Android动作条样式生成器

正如网站上所指出的,该生成器已被弃用,因为AppCompat操作栏不需要它。如果您的目标是为操作栏提供自定义背景色,并且您使用的是当前版本的AppCompat(
AppCompat-v7
,版本21或更高版本),则可以通过
colorPrimary
实现

例如,在操作栏上设置自定义颜色。它有一个定义一些颜色的
res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="primary">#3f51b5</color>
  <color name="primary_dark">#1a237e</color>
  <color name="accent">#ffee58</color>
</resources>
它应用清单中的自定义主题:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.commonsware.android.abverscolor"
    android:versionCode="1"
    android:versionName="1.0">

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"/>

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19"/>

    <application
        android:allowBackup="false"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Apptheme">
        <activity
            android:name="ActionBarDemoActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

你会得到:


“我真的无法在动作栏上使用任何自定义主题”--嗯,你能解释一下你的意思吗?只是背景吗?如果是,您不使用色调系统(例如,
colorPrimary
)有什么原因吗?我希望能够使用类似于我提到的Android操作栏样式生成器的东西,因此这将是一个更改操作栏的自定义主题(对吗?),我也尝试使用我自己的“actionbar_background”.png,正如我所说的,并链接到它(看看我是否可以更改/自定义操作栏的任何部分(进度就是进度,我很高兴至少暂时可以这样做)。我确实尝试将颜色更改为#ff0000,但我忘记了使用的方法。无论哪种方法,它都不起作用。理想情况下,我想控制操作栏,但我还无法做到。我正在尝试,所以我们将看看它是如何运行的。但另一方面,我的版本不是“21或更高”.Its min=8,target=18。这将如何影响更改actionbar的能力?或者,更好的是,我需要做些什么才能使其与我正在努力实现的版本兼容性兼容?我尝试使用该代码,因为我正在努力实现较低版本,所以找不到与任何属性匹配的资源“colorAccent,colorPrimary,colorPrimaryDark”。现在要尝试并找到一个解决方案。希望它能带来一些结果。@lilgodwin:“这将如何影响更改操作栏的能力?”--AppCompat工作回API级别7。“找不到与任何属性“colorAccent,colorPrimary,colorPrimaryDark”匹配的资源。”--这些来自appcompat-v7。如果您使用的是Android Studio(或者使用Gradle for Android),该项目已设置为引用
appcompat-v7
。如果您使用的是Eclipse或其他IDE,则需要将
appcompat-v7
Android库项目附加到该应用程序。@lilgodwin:请注意,示例应用程序的清单中附带了14的
minSdkVersion
。这主要是为了某种标准化的外观“我的书样本中有一个实例。如果您将其修改为7,则应用程序在API Level 7(Android 2.1)仿真器上运行良好。@lilgodwin:还要注意,您自己的项目的
build.gradle
未使用当前的AppCompat。如果您试图使用
colorPrimary
和kin,请更改
compile。”“com.android.support:appcompat-v7:18.0+”
编译“com.android.suppo”
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Apptheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
  </style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.commonsware.android.abverscolor"
    android:versionCode="1"
    android:versionName="1.0">

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"/>

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19"/>

    <application
        android:allowBackup="false"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Apptheme">
        <activity
            android:name="ActionBarDemoActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>