アクティビティレイアウトの下部に配置されるLinearLayout
があります。 LinearLayout
に4dpの高さを持たせたいのですが、Android:elevation
は、UIコンポーネントの下に影を配置します。この特定のコンポーネント(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>
elevation
を使用してUIコンポーネントの上に影を置く方法はありますか?事前に感謝します!
理論的には、Android:elevation
を使用してそれを行うことはできません。シャドウを投影する方向を選択できないという意味です。
2つの解決策があります。
1。 Drawables
たとえば、レイアウトのすぐ上にImageView
を置き、Android:src="@drawable/shadow"
を設定できます。これは here で説明されているように、XMLで定義された垂直GradientDrawable
でなければなりません。
2。回避策
影のほとんどは実際にはビューの下にありますが、微妙な影も上にあります。回避策として、40dp
のようなelevation
に非常に高い値を使用する場合があります。レイアウトのために下部が非表示になり、上部が拡張されて一般的なようになります影。
どちらの場合でも、影がAndroid:elevation=4dp
によって投影されたものと同等であると確信できないという意味で、dp
の標高値を制御することはできません。
のように使用します。
<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>
上部の標高が必要なビューの上にこのコードを追加するか、Android:layout_marginTop="-4dp"
そして、上記のビューの下に追加します
<Android.support.v7.widget.CardView
Android:layout_width="match_parent"
Android:layout_height="0.01dp"
Android:layout_below="@+id/scrollbar"
app:cardBackgroundColor="@Android:color/transparent"
app:cardCornerRadius="0dp"
app:cardElevation="@dimen/dp_4" />
これを試してくださいxmlを介して背景を設定することはできませんし、それを解決するためのプログラム的な方法を試してみました
lprofile.setBackgroundResource(R.drawable.background_with_shadow);
lprofileはリニアレイアウトのrefです。background_with_shadowはシャドウを適用するためのxmlです。