23

Bir etkinliğin alt kısmında, çerçeve üzerindeki gölge efektlerini göstermek için, android ekliyorum: yükseklik. Ancak gölge efektleri sadece alt tarafta değil, üst kısımda görünür, kimse bana biraz tavsiye verebilir mi?android: altta sadece gölge efektleri var, gölge efektleri üst tarafta nasıl gösteriliyor?

<FrameLayout 
    android:id="@+id/bottom_container" 
    android:background="#00737f" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_gravity="bottom" 
    android:elevation="4dp" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="50dp"/> 

cevap

17

Görünümün üzerindeki gölgeyi görüntülemek için kullanılabilecek bir numara vardır.

Temel olarak, dış Düzen'in gölgeyi elevation ile döken ve iç düzen background'u ayarladığı iki iç içe Yerleşim Düzeni kullanmamız gerekir. Sonra dış Düzenine bir padding ayarlayarak, biz gölge hareket ettirmeden, aşağı iç Düzeni kayabilir, gölge böylece daha görünür hale gelir:

, o özellik outlineProvider olduğunu
<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="50dp" 
    android:elevation="4dp" 
    android:outlineProvider="bounds" 
    android:paddingTop="2dp" 
    android:layout_marginTop="-2dp"> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#00737f"> 

     <!-- content --> 

    </FrameLayout> 

</FrameLayout> 

burada önemli bir şey olduğunu Dış Düzen'in bir arkaplan ayarına sahip olmadan bile bir gölge oluşturmasını sağlamak için gerekli.

Ayrıca, dolgu ile oluşturulan ofseti telafi etmek için bir margin negatif belirtiyoruz. Kullanım çantasına bağlı olarak bunu ihmal edebiliriz.

Ama dikkat: Biz çok fazla Görünüm vardiya, bazı render eserler görünür hale:

android elevation shadow offset examples

Source of this example on Github