2013-04-23 1 views
3

Я использую actionbarsherlock. с моей специальной темойДействие приложения закрывается из-за темы actionbar - android

В значениях/styles.xml я ввел это.

<style name="Mytheme" parent="@style/Theme.Sherlock.Light"> 
    <item name="android:background">@drawable/actionbar_bg</item> 
</style> 

actionbar_bg

<?xml version="1.0" encoding="utf-8"?> 
<gradient xmlns:android="http://schemas.android.com/apk/res/android" 
    android:type="linear" 
    android:centerX="8%" 
    android:startColor="#969696" 
    android:centerColor="#FFFFFF" 
    android:endColor="#FFFFFFFF" 
    android:angle="270" 
/> 

Manifest

<activity 
     android:name="com.example.myapp.Secondactivity" 
     android:label="@string/title_activity_second" 
     android:theme="@style/Mytheme"> 
</activity> 

Logcat Ошибка Невозможно начать деятельность, android.view.InflateException: Binary XML файл строка # 21: Ошибка раздувания класса

приложение отлично работает, когда я удалить андроид: тема = "@ стиль/MyTheme" Line

UPDATE: Я изменил Android: фон просто "фон", и приложение Безразлично» т сила сейчас. но градиент не применяется. все, что я мог видеть, - это серая панель действий.

UPDATE # 2

модифицированного styles.xml следующего

<style name="Mytheme" parent="@style/Theme.Sherlock.Light"> 
<item name="actionBarStyle">@style/MyActionBarTheme</item> 
</style> 

<style name="MyActionBarTheme" parent="Widget.Sherlock.ActionBar"> 
<item name="background">@drawable/actionbar_bg</item> 
<item name="android:background">@drawable/actionbar_bg</item> 
</style> 

В манифесте я называю тему как Android: темы = "@ стиль/MyActionBarTheme".

, как вы можете видеть на изображении градиент распространяется через окно, а не только ActionBar

enter image description here

ответ

0

добавить этот actionbar_bg.xml

enter image description here

Drawable dr = getResources().getDrawable(R.drawable.actionbar_bg); 
getActionBar().setBackgroundDrawable(dr); 

actionbar_bg.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <gradient 
     android:angle="270" 
     android:centerColor="#FFFFFF" 
     android:centerX="8%" 
     android:endColor="#FFFFFFFF" 
     android:startColor="#969696" 
     android:type="linear" /> 

</shape> 
+0

Я получаю сообщение об ошибке ...... java.lang.ClassCastException: android.graphics.drawable.GradientDrawable не может быть добавлено в android.graphics.drawable.BitmapDrawable. – user1910290

+0

только скопируйте из моего кода .. ваша ошибка в решении –

+0

cool !. это работает.Bhai kya yeh sab sirf XML se nahi ho sakta: P .. – user1910290

1

Try без android в вашем XML имя атрибута:

<style name="Mytheme" parent="@style/Theme.Sherlock.Light"> 
    <item name="actionBarStyle">@style/Widget.MyActionBarTheme</item> 
    <item name="android:actionBarStyle">@style/Widget.MyActionBarTheme</item> 
</style> 

<style name="Widget.MyActionBarTheme" parent="Widget.Sherlock.ActionBar"> 
    <item name="background">@drawable/actionbar_bg</item> 
</style> 

одной с android будет для родного ActionBar.

+0

упс! приложение не принудительно закрывает сейчас, но градиент не применяется, все, что я вижу, представляет собой полноценную сероватую панель действий. – user1910290

+0

​​@ drawable/actionbar_bg ....... ​​@ drawable/actionbar_bg ...... Я добавил эти две строки и градиент появляется, но не в панели действий, а в качестве фона моего приложения. как я могу решить это. – user1910290

+0

Я обновил свой ответ. –

Смежные вопросы