2015-03-03 36 views
0

我想在android应用程序中自定义一个操作栏。Android Customized Actionbar

我跟着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.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

您是否导入了appcompat库? – 2015-03-03 01:11:15

+0

我想我应该试试看看你是否想要做材质,全息或其他主题? – tachyonflux 2015-03-03 01:39:12

+0

是的,我正在使用Android Studio,它已经将AppCompat添加到库中。 – 2015-03-03 12:07:02

回答

0

对于霍洛主题:

切换您ActionBarActivityActivity,你将能够按照该教程。

物料主题:

更改父主题Theme.AppCompat.Light(或类似的东西),并通过经android:textColorPrimary属性colorPrimary属性和操作栏文本颜色自定义动作条背景:

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

enter image description here

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

+0

如果我使用“Theme.AppCompat.Light.DarkActionBar”,actionBar的颜色变为主题,我想使用自定义颜色。 无论哪种方式,我不能让行动条成为我想要的 – 2015-03-03 12:06:01

+0

谢谢男人,这种方式更好:) – 2015-03-04 12:53:01

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> 

所以我有一个白色的ActionBar,但菜单按钮依然是黑色为主题。

这不是问题。

谢谢各位