2015-03-03 82 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,但菜單按鈕依然是黑色爲主題。

這不是問題。

謝謝各位