Używam Actionbarsherlock. Poniższy fragment kodu jest odpowiedzialny za zmianę jego tła na niestandardowe.
<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
<item name="background">@drawable/actionbar_bg</item>
<item name="android:background">@drawable/actionbar_bg</item>
<...>
</style>
<style name="Theme.MyApp" parent="@style/Theme.Sherlock.Light">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
<..>
</style>
I działa dla actionbarsherlock (w wersjach poniżej plastra miodu). Ale w ICS mam cień pod paskiem akcji, którego nie chcę. Jaki jest styl, aby zniknął?
android
android-actionbar
actionbarsherlock
Michał K.
źródło
źródło
getSupportActionBar().setElevation(0);
nie działa. Więc umieściłeś<item name="android:windowContentOverlay">@null</item>
motyw aplikacji. Miałem podobny problem. Teraz mam ich obu. setElevation i dodano element windowContentOverlay w temacie aplikacji. setElevation działa na Androidzie 5.0 i nowszych, podczas gdy inne działają na wersji pre-Lollipop. Twoje zdrowie!W przypadku Androida 5.0, jeśli chcesz ustawić go bezpośrednio w stylu, użyj:
i do kompatybilności z biblioteką wsparcia użyj:
Przykład stylu dla lekkiej kompozycji AppCompat:
Następnie zastosuj ten niestandardowy styl ActionBar do motywu aplikacji:
W przypadku Androida w wersji starszej niż 5.0 dodaj to również do motywu aplikacji:
źródło
windowContentOverlay
motyw do paska akcji, a nie motyw aplikacji.android:elevation
dla urządzeń Lollipop). Nie mogę tego zrobić, używając tego podejścia. Uważam, że byłoby to dość proste. Wpisz niezerową wartość atrybutów wysokości i to by było na tyle.android:windowContentOverlay
API pre Lollipop? Nie mogę skompilować, jeśli mój minSDK jest w wersji wcześniejszej niż Lollipop, ale celem jest 21?<style name="Theme.MyApp.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
bezstyle/
wparent
atrybucie.W Androidzie 5.0 to się zmieniło, musisz wywołać setElevation (0) na pasku akcji. Pamiętaj, że jeśli korzystasz z biblioteki wsparcia, musisz nazwać ją tak:
Element stylu windowContentOverlay nie ma na to wpływu, więc nie są wymagane żadne zmiany stylów
źródło
dodaj
app:elevation="0dp"
AppBarLayout, aby ukryć cień w pasku aplikacjiźródło
Jeśli pracujesz z ActionBarSherlock
Dodaj do motywu:
źródło
Musisz ustawić
app:elevation="0dp"
wandroid.support.design.widget.AppBarLayout
i wtedy to działa.źródło
ale nie
pracował dla mnie na Androidzie L.
źródło
Mam ten sam problem i udało mi się go rozwiązać. Wszystko, co musisz zrobić, to po prostu zmienić rzędną na wartość zmiennoprzecinkową w tym działaniu, w którym chcesz usunąć rzędną.
Jeśli chcesz to zmienić w działaniu o nazwie
MyActivity.java
, musisz zdobyćActionBar
pierwszy.Najpierw zaimportuj
ActionBar
klasępo zaimportowaniu musisz zainicjować zmienną paska akcji i ustawić jego wysokość na 0.
źródło
W przypadku programistów Xamarin użyj:
SupportActionBar.Elevation = 0;
dla działań niezgodnychAppCompatActivity
lubActionBar.Elevation = 0;
niezgodnychźródło
Rozwiązanie dla Kotlin (Android 3.3, Kotlin 1.3.20)
źródło
Spróbuj To pomogło mi bez zmiany motywu. Umieść swój AppBarLayout w dowolnym układzie. Mam nadzieję, że ci to pomoże
źródło
Dla tych, którzy pracują nad fragmentami i zniknęli po ustawieniu
toolbar.getBackground().setAlpha(0);
lub zniknięciu, myślę, że musisz doprowadzić AppBarLayout do ostatniego miejsca w xml, więc jego Fragment to AppBarLayout, a następnie relatywny układ / ograniczenie / liniowy, w zależności od tego, którego używasz.źródło
Dodaj to
toolbar.getBackground().setAlpha(0);
do metody OnCreate. Dodaj to:android:elevation="0dp" android:background="@android:color/transparent
do pliku xml paska narzędzi.źródło