İşlem çubuğunun altındaki gölgeyi kaldır


208

Actionbarsherlock kullanıyorum. Aşağıdaki kod, arka planını özel bir kodla değiştirmekten sorumludur.

<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>

Ve actionbarsherlock için çalışır (petek altındaki sürümlerde). Ancak ICS'de eylem çubuğunun altında istemediğim bir gölgem var. Kaybolması için stil öğesi nedir?

Yanıtlar:


481

Kaybolması için stil öğesi nedir?

Gölgeyi kaldırmak için bunu uygulama temanıza ekleyin:

<style name="MyAppTheme" parent="android:Theme.Holo.Light">
    <item name="android:windowContentOverlay">@null</item>
</style>

GÜNCELLEME: @ Quinny898'in belirttiği gibi, Android 5.0'da bu değişti, setElevation(0)eylem çubuğunuzu aramanız gerekiyor. Destek kitaplığını kullanıyorsanız, kütüphaneyi şöyle çağırmanız gerektiğini unutmayın:

getSupportActionBar().setElevation(0);

Eylem çubuğunun değil, durum çubuğunun altından gölgeyi kaldırmak bir stil değil mi?
— Michał K

96
Teşekkürler, kayboldu. Dikkat edilmesi gereken önemli nokta, bu kod satırının eylem çubuğu stilinde değil uygulama temasında görünmesidir.
— Michał K

3
Çalışıyorum! Açık olması gereken, bu kod satırının ActionBar Tema etiketine değil Uygulama Teması Etiketine eklenmesi gerektiğidir.
— tuoxie007

Ayrıca dikkat edilmesi gereken başka bir şey de temanızı değerler, değerler-v11, değer-
— v14 olarak

6
lolipop öncesi cihazlar getSupportActionBar().setElevation(0);çalışmaz. Yani <item name="android:windowContentOverlay">@null</item>uygulama temanızı koydunuz . Benzer bir sorun yaşadım. Şimdi ikisine de sahibim. Uygulama temasında setElevation öğesinden ve windowContentOverlay öğesinden yükselme eklendi. setElevation android 5.0 ve üstü için, diğeri lolipop öncesi için çalışır. Şerefe!
— Reaz Murshed

140

Android 5.0 için, doğrudan bir stil kullanımına ayarlamak istiyorsanız:

<item name="android:elevation">0dp</item>

ve Destek kitaplığı uyumluluğu kullanımı için:

<item name="elevation">0dp</item>

AppCompat hafif teması için stil örneği:

<style name="Theme.MyApp.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <!-- remove shadow below action bar -->
    <!-- <item name="android:elevation">0dp</item> -->
    <!-- Support library compatibility -->
    <item name="elevation">0dp</item>
</style>

Ardından bu özel ActionBar stilini uygulama temanıza uygulayın:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>

5.0 öncesi Android için bunu uygulama temanıza ekleyin:

<!-- Remove shadow below action bar Android < 5.0 -->
<item name="android:windowContentOverlay">@null</item>

1
5.0 öncesi cihazlar için benim için çalışmadı. Sorun, windowContentOverlayuygulama temasına değil, eylem çubuğu temasına ekledim .
— Oliv

Üzgünüm ama ben tersi bir şey yapmaya çalışıyorum, yükseklik gölgesi aslında lolipop öncesi cihazlarda görünmesini sağlayın ( android:elevationLollipop cihazları için yapmayı başardım ). Bu yaklaşımı kullanarak bunu başaramıyorum. Bunun oldukça düz olacağına inanıyorum. Yükseklik nitelikleri için sıfırdan farklı bir değer koyun ve bu olurdu.
— acrespo

Android'e dokunmazsanız varsayılan olarak görünür olmalıdır: windowContentOverlay özniteliği, belki doğru bir tema kullandığınızı kontrol edin ... Sanırım bir AppCompat teması kullanmanız gerekiyor.
— Sloosh

ama android:windowContentOverlaylolipop öncesi API ile nasıl başa çıkılır? Benim minSDK öncesi lolipop ama hedef 21 ise derleyemiyorum?
— Opiatefuchs

2
Bu çalıştı ama kullandığım sadece <style name="Theme.MyApp.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">olmadan style/içinde parentözniteliği.
— Igor

103

Android 5.0'da bu değişti, eylem çubuğunuzda setElevation (0) öğesini çağırmalısınız. Destek kitaplığını kullanıyorsanız, kütüphaneyi şöyle çağırmanız gerektiğini unutmayın:

getSupportActionBar().setElevation(0);

WindowContentOverlay stil öğesinden etkilenmez, bu nedenle stiller üzerinde değişiklik yapılması gerekmez


1
Bunu her etkinlik için mi yapmak zorundasınız yoksa tüm faaliyetlere uygulanması için hızlı bir yöntem var mı? Şimdilik tüm aktivitelerimi ekleyeceğim. Teşekkürler!
— cnfw

Diğer herhangi bir actionbar yöntemi (örneğin başlık) gibi, her etkinliği söyleyebilirim
— Kieron

Bu utanç verici. Styles.xml dosyasında bunun gibi parametrelerin ayarlanması iyi olur. Belki bu gelecekteki bir güncellemede gelecek
— cnfw

5.0'dan daha düşük sürümlerde çalışmaz. Destek işlem çubuğunun önceki tüm cihazlarla uyumlu olması gerekmez mi?
— splinter123

@ splinter123 burada aynı :(
— AppCompat

55

app:elevation="0dp"Appbar'da gölgeyi gizlemek için AppBarLayout'a ekle


1
Herkese bakın, bu çözümü uygulayın ve herkesin söylediklerini unutun. Teşekkürler dostum! işe yarıyor! Çok basit bir çözüm!
— S bruce

1
Bunun gibi kullanın: <android.support.design.widget.AppBarLayout android: layout_width = "match_parent" android: layout_height = "wrap_content" app: elevation = "0dp" android: theme = "@ style / AppTheme.AppBarOverlay">
— Bharat Kul Ratan

@MarcoFerrari AppBarLayout için bunu 'getSupportActionBar (). SetElevation (0);' olarak kullanın. çalışmıyor.
— Salil Dhawan

39

ActionBarSherlock ile çalışıyorsanız

Temanıza şunu ekleyin:

<style name="MyTheme" parent="Theme.Sherlock">
    ....
    <item name="windowContentOverlay">@null</item>
    <item name="android:windowContentOverlay">@null</item>
    ....
</style>

bu daha iyi bir yanıttır, uyumluluk öğesini belirtir
— 1owk3y

25

Sen ayarlamalısınız app:elevation="0dp"içinde android.support.design.widget.AppBarLayoutve sonra çalışır.

<android.support.design.widget.AppBarLayout
    app:elevation="0dp"... >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@android:color/transparent"
        app:popupTheme="@style/AppTheme.PopupOverlay" >


    </android.support.v7.widget.Toolbar>

</android.support.design.widget.AppBarLayout>

1
Bu, AppBar'ın gölgesinin her yerde uzakta olmasına neden olur - bunu programlı olarak nasıl kontrol edebilirim?
— Suisse

14
app:elevation="0dp" 

Ama değil

android:elevation="0dp"

Android L'de benim için çalıştı


2

Aynı sorunu yaşıyorum ve bu sorunu başarıyla çözdüm. Yapmanız gereken tek şey, yüksekliği kaldırmak istediğiniz etkinlikte yüksekliği 0 kayan nokta değerine değiştirmek.

Eğer bunu bir aktivitede değiştirmek istiyorsanız ilkini MyActivity.javaalmalısınız ActionBar.

İlk önce ActionBarsınıfı içe aktarın

import android.support.v7.app.ActionBar;

içe aktardıktan sonra, bir değişken eylem çubuğunu başlatmanız ve yükselmesini 0'a ayarlamanız gerekir.

 private ActionBar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    .
    .
    toolbar=getSupportActionBar();
    toolbar.setElevation(0);
    .
    .
    }

1

Xamarin Geliştiricileri SupportActionBar.Elevation = 0;için lütfen: uyumsuz Faaliyetler için AppCompatActivityveya ActionBar.Elevation = 0;uygun olmayanlar için


1

Kotlin için Çözüm (Android 3.3, Kotlin 1.3.20)

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    supportActionBar!!.elevation = 0f
}

Bunun neden reddedildiğinden emin değilim (Kotlin'de yeniyim) ama bu başkaları için işe yaramadı
— Allen Wixted

1

Bu temayı değiştirmeden bana yardımcı oldu. AppBarLayout'unuzu herhangi bir düzen içine yerleştirin.

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="false"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        android:layout_height="?attr/actionBarSize"
       android:background="@color/white">
        <ImageView
            android:src="@drawable/go_grocery_logo"
            android:layout_width="108dp"
            android:layout_height="32dp" />
    </android.support.v7.widget.Toolbar>


</android.support.design.widget.AppBarLayout>
</RelativeLayout>

0

Bu parçalar üzerinde çalışan ve ayar toolbar.getBackground().setAlpha(0);veya herhangi bir kaybolma sonra kayboldu için, ben xml son AppBarLayout getirmek zorunda, böylece onun Parça sonra AppBarLayout sonra göreceli / kısıt / doğrusal hangi u kullanmak.


0

Bunu toolbar.getBackground().setAlpha(0);iç OnCreate yöntemine ekleyin . Bunu ekle: android:elevation="0dp" android:background="@android:color/transparent araç çubuğu xml dosyanıza.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.