2013-08-22 9 views
11

Chciałbym, aby ActionBar w bibliotece wsparcia był w pełni przezroczysty, jednak wydaje się, że zmiana tła nie wystarczy, ponieważ tła są ułożone. Jeśli umieścisz półprzezroczyste tło, otrzymasz domyślne tło.ActionBarCompat & Transparency

Czy ktoś wie, jak usunąć to tło?

To co się dzieje:

Actionbar

Kod na tle rozciągliwej:

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

Jak widać, odkształcalne ma przezroczysty niebieski, które nakłada się z domyślnym szarym tle .

+1

[Spójrz na to] (http://cyrilmottier.com/2013/05/24/pushing-the-actionbar-to-the-next-level/) – Ahmad

+0

Dzięki Ahmad, twój link był bardzo użyteczny. Pracuję na nowszych wersjach SDK, ale poniżej poziomu API 11 ulega awarii ... Zaktualizuję moją odpowiedź, jeśli uda mi się ją uruchomić – CristianGuerrero

+0

użyj Actionbar Sherlock dla poprzednich wersji zapewnia kompatybilność wsteczną z actionbar. –

Odpowiedz

22

Ok, znalazłem rozwiązanie problemu z SDK. Wygląda na to, że jest to dość proste, musisz wykonać 3 czynności:

  • Utwórz tło, jak pokazano na moim pytaniu.
  • Utwórz styl ActionBar tak:

    <!-- Application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light"> 
        <item name="android:actionBarStyle">@style/MyActionBar</item> 
    
        <!-- Support library compatibility --> 
        <item name="actionBarStyle">@style/MyActionBar</item> 
    </style> 
    
    <!-- ACTION BAR STYLES --> 
    <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar"> 
        <item name="android:background">@drawable/actionbar_background</item> 
        <item name="android:windowActionBarOverlay">true</item> 
    
        <!-- Support library compatibility --> 
        <item name="background">@drawable/actionbar_background</item> 
        <item name="windowActionBarOverlay">true</item> 
    </style> 
    
  • Użyj funkcji okna dla ActionBar nakładki stosując metodę Support (zignorować ostrzeżenie Eclipse dotyczące poziomu API dla stałej; użyłem adnotacji SuppressLint aby usunąć ostrzeżenie):

    @SuppressLint("InlinedApi") @Override protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 
    setContentView(R.layout.activity_home);} 
    
+0

To zadziałało również dla mnie. –

+1

'supportRequestWindowFeature (Window.FEATURE_ACTION_BAR_OVERLAY);' pracował dla mnie. Dzięki – zackygaurav

+0

kod nie działa bez Twojego komentarza @zackygaurav, dziękuję –

6

ChristianGuerrero odpowiedź jest wielki, ale należy bezpośrednio umieścić przedmiot:

<item name="android:windowActionBarOverlay">true</item> 

w stylu AppTheme. Wtedy nie musisz dodawać niczego w swojej metodzie onCreate.

Powiązane problemy