23

Tôi sử dụng một framelayout ở dưới cùng của một hoạt động, để hiển thị các hiệu ứng đổ bóng trên mảnh vỡ, tôi thêm android: elevation. Nhưng các hiệu ứng đổ bóng chỉ xuất hiện ở phía dưới không phải ở phía trên, bất kỳ ai có thể cho tôi một số lời khuyên?android: độ cao chỉ có hiệu ứng bóng ở phía dưới cùng, cách tạo hiệu ứng bóng hiển thị ở phía trên cùng?

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

Trả lời

17

Có một mẹo có thể được sử dụng để hiển thị bóng phía trên Chế độ xem.

Về cơ bản, chúng tôi phải sử dụng hai Bố cục lồng nhau, trong đó Bố cục bên ngoài tạo bóng với một elevation và bố cục bên trong đặt background. Sau đó, bằng cách thiết lập một padding đến Layout bên ngoài, chúng ta có thể thay đổi các Layout bên trong xuống, không nhúc nhích cái bóng, do đó nhiều bóng trở nên rõ ràng:

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

Một điều quan trọng ở đây là thuộc tính outlineProvider, đó là cần thiết để bố cục bên ngoài tạo ra một bóng ngay cả khi không có bộ nền.

Hơn nữa, chúng tôi chỉ định số âm margin để bù cho khoản bù được tạo bởi đệm. Tùy thuộc vào trường hợp sử dụng, chúng tôi có thể bỏ qua điều đó.

Nhưng chú ý: Nếu chúng ta chuyển View quá nhiều, một số đồ tạo tác dựng hình trở nên hữu hình:

android elevation shadow offset examples

Source of this example on Github

Các vấn đề liên quan