20

これはアクティビティレイアウトの下部に配置されるLinearLayoutです。しかし、android:elevationはuiコンポーネントの下に影を配置し、この特定のコンポーネント(linearLayout)が画面の下部に表示されるので、これはLinearLayoutに4dpの仰角を持たせたいのですが、 tはまったく標高を参照してください。..android:elevationを使用してLinearLayoutの上に陰影をキャスト

をこれは私のLinearLayoutコード、および実装されるデフォルトの標高を持つことの画像です:

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

方法はあり、にelevationを使用してpl uiコンポーネントの上に影を付けますか? ありがとうございます!

+0

いいえ、ありません。ドロアブルを使うべきです。 – natario

+2

(汚れたハック:仰角= 40dpのように巨大な数値を設定しようとしたことがありますか?仰角が少し上に影を投げてしまい、大きな値で表示される可能性があります) – natario

+0

私はpre v21にdrawableを使用しています私はv21のためにそれが必要でないことを望んでいました。しかし、私は本当に本当にその小さなハックを愛し、私は30 dpに高度を設定し、それは動作します、それは非常に微妙ですが、私はそれが好きです!ありがとう@mvai – yat0

答えて

28

android:elevationで理論的にはできませんが、シャドウがキャストされる方向を選択することはできません。

2つの解決策があります。

1.ドロワブル

あなたは、例えば、右のあなたのレイアウト上ImageViewを入れて、android:src="@drawable/shadow"を設定することができます。これは、と説明されているように、XMLで定義された垂直のGradientDrawableである必要があります。

2策

影のほとんどは、実際に図の下方にあるが、微妙な影は、上記でもあります。回避策として、のような非常に高い値のelevationを使用している可能性があります。下部がレイアウトのために非表示になり、上部が拡大されて共通の影のように見えます。

どちらの場合でも、影がandroid:elevation=4dpでキャストされているものと同等であるとは確信できないという意味で、標高値をdpに制御することはできません。

+1

回避策のソリューションは、私が必要とするものに優れています!ありがとう – yat0

+0

また、回避策のソリューションは私にとって完璧に機能します。ありがとう! – validcat

+0

私はあなたの最初のアプローチを使用してそれを行うことができました。ありがとう! –

1

like like;私は、XMLによる背景を設定することができません、これを試してみてください

<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

その後、私はそれを解決するためのプログラム的な方法を試してみましたが、私は完全に

lprofile.setBackgroundResource(R.drawable.background_with_shadow); 

lprofileはあるリニアレイアウトでshow影の問題に直面した場合、これを参照してください仕事しますLinearレイアウトとbackground_with_shadowのrefは影を適用するためのxmlです。私はur requirmementのために願っています... ...ありがとうございました。

関連する問題