2015-04-02 5 views
3

Я пытаюсь настроить внешний вид панели действий и, похоже, не работает. Фон отображается серым, когда я специально устанавливаю его на красный.Пользовательская тема ActionBar не работает

мой build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "com.eliddell.rapsheet" 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    wearApp project(':wear') 
    compile 'com.android.support:appcompat-v7:22.0.0' 
    compile 'com.google.android.gms:play-services:7.0.0' 
} 

styles.xml

<resources> 
    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light"> 
     <!-- Customize your theme here. --> 
    </style> 
    <style name="CustomActionBarTheme" 
     parent="@style/AppTheme"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 
    <!-- ActionBar styles --> 
    <style name="MyActionBar" 
     parent="@style/CustomActionBarTheme"> 
     <item name="android:background">@color/red</item> 
    </style> 
</resources> 

манифеста

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.eliddell.rapsheet" > 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/CustomActionBarTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:theme="@style/CustomActionBarTheme" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Основная деятельность

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 


public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

если я обновить свои стили:

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="android:Theme.Holo.Light"> 
     <!-- Customize your theme here. --> 
    </style> 

    <style name="CustomActionBarTheme" 
     parent="@style/AppTheme"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <!-- ActionBar styles --> 
    <style name="MyActionBar" 
     parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
     <item name="android:background">@color/red</item> 
    </style> 

</resources> 

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

причиненный: java.lang. IllegalStateException: вам необходимо использовать эту тему ThemeAppCompat (или потомок) с помощью этой темы: .

ответ

11

Ok так я понял это и спасибо всем за вашу помощь. Проблема заключалась в моем стиле XML был направлен на «Android: фон» и «андроид: actionBarStyle», но с библиотекой поддержки на месте «андроид:» потеряются ..

<resources> 

<!-- Base application theme. --> 
<style name="CustomActionBarTheme" parent="Theme.AppCompat.Light"> 
    <!-- Customize your theme here. --> 
    <item name="actionBarStyle">@style/MyActionBar</item> 
</style> 



<!-- ActionBar styles --> 
<style name="MyActionBar" parent="Widget.AppCompat.ActionBar"> 
    <item name="android:windowBackground">@color/sapient_heat</item> 

    <item name="background">@color/red</item> 

</style> 

0
public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (Build.VERSION.SDK_INT >= 11) { 
     requestWindowFeature(Window.FEATURE_ACTION_BAR); 
    } else { 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
    } 
    setContentView(R.layout.activity_main); 
    if (Build.VERSION.SDK_INT >= 11) { 
     ActionBar actionBar = this.getActionBar(); 
     actionBar.setBackgroundDrawable(new ColorDrawable(Color 
       .parseColor("#ff0000"))); 
     actionBar.show(); 
    } 

} 

использование ActionBar после SDK версии 11, получить экземпляр ActionBar, чем делать то, что когда-нибудь и хотите

+0

вы говорите дон Использовать темы? – erik

0

Использовать тему в андроида манифеста как:

android:theme="@style/AppTheme" 

и в деятельности расширяет его как

public class MainActivity extends ActionBarActivity{ 

Надуть нестандартный взгляд на acti в строке как:

// Inflate your custom layout 
     final ViewGroup actionBarLayout = (ViewGroup) getLayoutInflater().inflate(
       R.layout.actionbar_layout, 
       null); 
     //Set Custom ActionBar 
     actionBar = getSupportActionBar(); 
     actionBar.setDisplayShowHomeEnabled(false); 
     actionBar.setDisplayShowTitleEnabled(false); 
     actionBar.setDisplayShowCustomEnabled(true); 
     actionBar.setCustomView(actionBarLayout); 

где actionbar_layout является расположение XML для ActionBar

+0

ActionBarActivity не разрешает! – erik

+0

Вы использовали AppTheme в манифесте ur android. & поместите этот код в onCreate() ActionBar actionBar = getSupportActionBar(); – Pankaj

+0

?? мой манифест выше .. Я пытаюсь использовать пользовательскую тему – erik

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