web-dev-qa-db-ja.com

シンプルなレイアウトシャドウAndroid

そのため、レイアウトの単純な影を表示する方法をWebで検索してきましたが、適切な方法がありません。
私が見つけたすべては、シャドウを適用したいレイアウトの背後にレイアウトを作成し、次にそれを透明にして他のいくつかのものを調整するという回避策でした。

まったく新しいレイアウトを追加せずに単純なレイアウトシャドウを作成する他の方法はありますか?

14
Mehdiway

この問題の解決策を思いついたので、有名なレイアウトの下にViewを追加して、ある色から別の色へのグラデーションを表示しました。
通常、First色はある種の濃い灰色がかった色であり、Second 1つはbackgroundの色です(私の場合は、背景が薄い灰色になるので、完全に白ではありません)。

Layout + View

Xmlは次のようになります。

...
<LinearLayout
    Android:id="@+id/headerLayout"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" >

    <LinearLayout
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center"
        Android:background="@drawable/headerImage"
        Android:orientation="vertical" />

    <View
        Android:layout_width="fill_parent"
        Android:layout_height="5dip"
        Android:background="@drawable/drop_shadow" >
    </View>
</LinearLayout>
...

drop_shadow.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">    
    <gradient
        Android:startColor="#404040"
        Android:endColor="#F1F1F1"
        Android:angle="270"
        >
    </gradient>
</shape>

私はそれが役に立てば幸いです;)

46
Mehdiway

Android.support.v4.view.ViewCompat静的メソッドsetElevationを使用してビューの高度を設定するクラス。このクラスは、下位互換性のある方法でAPIレベル4の後に導入されたビューの機能にアクセスするためのヘルパーです。

ベース標高はピクセル単位です。

View mFab = (View) findViewById(R.id.floating_button);
ViewCompat.setElevation(mFab, 12);
7
Ovokerie Ogbeta

Lollipop以降の場合は、 elevation を使用できます。

古いバージョンの場合:

これは次の遅延ハックです: http://odedhb.blogspot.com/2013/05/Android-layout-shadow-without-9-patch.html

(toast_frameはKitKatでは機能しません。影はトーストから削除されました)

ただ使用する:

Android:background="@Android:drawable/toast_frame"

または:

Android:background="@Android:drawable/dialog_frame"

背景として

例:

<TextView
        Android:layout_width="fill_parent"
        Android:text="I am a simple textview with a shadow"
        Android:layout_height="wrap_content"
        Android:textSize="18sp"
        Android:padding="16dp"
        Android:textColor="#fff"
        Android:background="@Android:drawable/toast_frame"
        />

と異なるBGカラーで:

<LinearLayout
        Android:layout_height="64dp"
        Android:layout_width="fill_parent"
        Android:gravity="center"
        Android:background="@Android:drawable/toast_frame"
        Android:padding="4dp"
        >
    <Button
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:text="Button shadow"
            Android:background="#33b5e5"
            Android:textSize="24sp"
            Android:textStyle="bold"
            Android:textColor="#fff"
            Android:layout_gravity="center|bottom"
            />

</LinearLayout>
5
Oded Breiner