そのため、レイアウトの単純な影を表示する方法をWebで検索してきましたが、適切な方法がありません。
私が見つけたすべては、シャドウを適用したいレイアウトの背後にレイアウトを作成し、次にそれを透明にして他のいくつかのものを調整するという回避策でした。
まったく新しいレイアウトを追加せずに単純なレイアウトシャドウを作成する他の方法はありますか?
この問題の解決策を思いついたので、有名なレイアウトの下にView
を追加して、ある色から別の色へのグラデーションを表示しました。
通常、First色はある種の濃い灰色がかった色であり、Second 1つはbackgroundの色です(私の場合は、背景が薄い灰色になるので、完全に白ではありません)。
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>
私はそれが役に立てば幸いです;)
Android.support.v4.view.ViewCompat
静的メソッドsetElevation
を使用してビューの高度を設定するクラス。このクラスは、下位互換性のある方法でAPIレベル4の後に導入されたビューの機能にアクセスするためのヘルパーです。
ベース標高はピクセル単位です。
View mFab = (View) findViewById(R.id.floating_button);
ViewCompat.setElevation(mFab, 12);
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>