20

Bir etkinlik düzeninin alt kısmına yerleştirilecek olan bu LinearLayout var. Bu LinearLayout'un en iyi araç çubuğunun olması gerektiği gibi 4dp'lik bir yüksekliğe sahip olmasını istiyorum, ancak android:elevation, gölgeyi ui bileşeninin altına yerleştirdiğinden ve bu özel bileşen (linearLayout) ekranın alt kısmında olacak, t hiç bir yükseklik bakın ..Android'i kullanarak LinearLayout'un üstüne gölge getirin: yükseklik

Bu benim LinearLayout kodu ve uygulanan varsayılan yükselmesiyle bunun bir görüntü:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:weightSum="3" 
    android:background="@android:color/transparent" 
    android:orientation="horizontal" 
    android:elevation="4dp" 
    android:layout_alignParentBottom="true"> 

    <ImageButton 
     android:id="@+id/playButton" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:scaleType="center" 
     android:clickable="true" 
     android:background="@drawable/bottom_toolbar_menu_selector" 
     android:src="@drawable/ic_play" 
     style="?android:attr/borderlessButtonStyle" /> 

    <ImageButton 
     android:id="@+id/stopButton" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:scaleType="center" 
     android:clickable="true" 
     android:background="@drawable/bottom_toolbar_menu_selector" 
     android:src="@drawable/ic_stop" 
     style="?android:attr/borderlessButtonStyle" /> 

    <ImageButton 
     android:id="@+id/bookmarkButton" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:scaleType="center" 
     android:clickable="true" 
     android:background="@drawable/bottom_toolbar_menu_selector" 
     android:src="@drawable/ic_bookmark" 
     style="?android:attr/borderlessButtonStyle" /> 

</LinearLayout> 

enter image description here

bir yolu var mı, hiç elevation kullanarak pl ui bileşeninin üstünde bir gölge var mı? Şimdiden teşekkürler!

+0

Hayır, yok. Bir çekilebilir kullanmalısınız. – natario

+2

(dirty hack: elevation = 40dp gibi çok büyük bir sayı ayarlamayı denediniz mi? Belki yükseklik de üstte biraz gölge düşürür ve bu büyük değerler ile görünür hale gelebilir) – natario

+0

Ön v21 için çizilebilir kullanıyorum, ancak Umarım v21 için buna ihtiyacım yoktu. Ancak, gerçekten o küçük kesmeyi çok sevmiştim, yüksekliği 30 dp'ye ayarlıyorum ve işe yarıyor, çok ince ama ben bunu seviyorum! Çok teşekkürler @mvai – yat0

cevap

28

android:elevation ile kuramsal olarak yapamazsınız; bu durumda, gölgenin yayınlanacak yönü seçemezsiniz.

İki çözüm var. Sen, mesela, sağ düzeni üzerinde bir ImageView koyup android:src="@drawable/shadow" ayarlayabilirsiniz

1. Drawables. Bu, here açıklandığı gibi, XML'de tanımlanmış bir dikey GradientDrawable olmalıdır.

2. Geçici çözüm

gölgenin en aslında görünümünün altında iken, ince bir gölge da üstünde. Bir geçici çözüm elevation için 40dp gibi çok yüksek bir değer kullanıyor olabilir: alt kısım, düzeniniz nedeniyle gizlenecek, üst kısım genişletilecek ve ortak bir gölge gibi görünecektir.

Her iki durumda da, android:elevation=4dp numaralı belgenin gölgesine eşdeğer olduğundan emin olamayacağınız anlamında, dp boyutunda yükseltme değerinin üzerinde denetiminiz yoktur.

+1

geçici çözüm, ihtiyacım olan şey için mükemmel! Teşekkürler – yat0

+0

Ayrıca, geçici çözüm benim için mükemmel çalışıyor. Teşekkürler! – validcat

+0

İlk yaklaşımınızı kullanarak bunu yapmayı başardım. Teşekkürler! –

1

; i xml yoluyla arka plan ayarlamak alamıyorum bu deneyin

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="205dp" 
    android:background="@color/white" 
    android:orientation="horizontal"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:layout_marginTop="-5dp" 
     android:background="@color/white" 
     android:elevation="3dp" 
     android:paddingTop="5dp"> 

     // CHILD VIEWS 
    </RelativeLayout> 
</LinearLayout> 
0

sonra ben bu çözmek için programlı bir şekilde çalıştı ve ben mükemmel

lprofile.setBackgroundResource(R.drawable.background_with_shadow); 

lprofile olan Lineer Layout'ta gösteri gölgesi üzerinde sorunuyla karşı karşıya eğer bu ifade çalışır Doğrusal düzen ve background_with_shadow ref ref gölge uygulamak için xml olduğunu umarım i needmement için ... teşekkür ederim ..

İlgili konular