我正在尝试在Android应用程序中自定义操作栏。
但它不起作用。
这是我的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.access$800(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,则自定义不起作用。
有人有解决这个问题的线索吗?
从现在开始谢谢你!
答案 0 :(得分:0)
对于Holo主题:
将您的ActionBarActivity
切换为Activity
,您就可以按照该教程进行操作。
对于材质主题:
将您的父主题更改为Theme.AppCompat.Light
(或类似内容),并通过colorPrimary
属性自定义操作栏背景,并通过android:textColorPrimary
属性自定义操作栏文本颜色:
<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
答案 1 :(得分:0)
我解决了我的问题。我制作了这段代码。
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>
所以我有了一个白色的动作栏,但主题的菜单按钮仍然是黑色。
这不是问题。
谢谢你们