2015-03-03 3 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? –

+0

Полагаю, я должен попытаться выяснить, хотите ли вы сделать материал, Холо или какую-нибудь другую тему? – tachyonflux

+0

Да, я использую Android Studio, и он уже добавляет AppCompat в библиотеку. –

ответ

0

Для Холо темы:

Переключите 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> 

enter image description here

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

+0

Если я использую «Theme.AppCompat.Light.DarkActionBar», цвет actionBar получает тематику, и я хочу использовать настроенный цвет. В любом случае я не могу сделать actionBar таким, каким хочу, чтобы он был –

+0

Спасибо, человек, этот путь лучше :) –

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, но кнопка меню по-прежнему черная для темы.

Это не проблема.

Спасибо, ребята