Android 自定义操作栏

Android Customized Actionbar

我正在尝试在 android 应用程序中自定义操作栏。

我关注了google tutorial

但是没有用。

这是我的代码 themes.xml

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

<color name="custom_white_color">#ffffff</color>
<color name="custom_blue_color">#2E4372</color>

<style name="CustomActionBarTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar"
    parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/custom_white_color</item>
</style>

在"AndroidManifest"我为应用程序调用这个主题

android:theme="@style/CustomActionBarTheme" >

但是当我执行这段代码时出现了以下错误

03-03 00:44:43.456    2467-2467/br.com.lzl.colorlist E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: br.com.lzl.colorlist, PID: 2467
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.lzl.colorlist/br.com.lzl.colorlist.HomeActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
        at android.app.ActivityThread.access0(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
 Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
        at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:151)
        at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:138)
        at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123)
        at br.com.lzl.colorlist.HomeActivity.onCreate(HomeActivity.java:20)
        at android.app.Activity.performCreate(Activity.java:5933)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)

如果我尝试使用 Theme.Appcompat 自定义不起作用。

有人知道解决这个问题的线索吗?

从现在开始谢谢你!

对于 Holo 主题:

将您的 ActionBarActivity 切换为 Activity,您将能够按照该教程进行操作。

对于Material主题:

将您的父主题更改为 Theme.AppCompat.Light(或类似的东西)并通过 colorPrimary 属性 自定义操作栏背景,通过 [=15= 自定义操作栏文本颜色] 属性:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">#FFF</item>
    <item name="android:textColorPrimary">#2E4372</item>
</style>

http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

我解决了我的问题。我做了这个代码。

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setTitle(Html.fromHtml("<font color='#2E4372'; font-weight: bold;> ColorList </font>"));
getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_test_menu_2));

我用了一个简单的主题

<style name="ThemeCustom" parent="Theme.AppCompat.Light">
    <item name="android:windowContentOverlay">@null</item>
</style>

所以我得到了一个白色的 actionBar,但是主题的菜单按钮仍然是黑色的。

没问题。

谢谢大家