Google は、ここで Lollipop に標高効果を表示するいくつかの優れた方法を示しています。
android:elevation="2dp"
ボタン用、
android:stateListAnimator="@anim/button_state_list_animator"
サードパーティのライブラリを使用せずに Lollipop より前のバージョンで標高効果を模倣するにはどうすればよいですか?
Google は、ここで Lollipop に標高効果を表示するいくつかの優れた方法を示しています。
android:elevation="2dp"
ボタン用、
android:stateListAnimator="@anim/button_state_list_animator"
サードパーティのライブラリを使用せずに Lollipop より前のバージョンで標高効果を模倣するにはどうすればよいですか?
公式の方法でロリポップ前の標高を模倣できます。
私は同じ効果を達成するために、
android:background="@android:drawable/dialog_holo_light_frame"
私のテスト済み出力:
参照 - https://stackoverflow.com/a/25683148/3879847
ユーザー @Repo に感謝します。
更新:このドローアブルの色を変更したい場合は、以下の@Irfanの回答を試してください↓
正式な方法ではロリポップ前の標高を模倣することはできません。
一部のドローアブルを使用して、コンポーネントに影を作成できます。Google は、たとえば CardView でこの方法を使用しています。
はViewCompat.setElevation(View, int)
現在、API21+ でのみシャドウを作成します。コード ビハインドを確認すると、このメソッドは次を呼び出します。
API 21 以降:
@Override
public void setElevation(View view, float elevation) {
ViewCompatLollipop.setElevation(view, elevation);
}
API < 21
@Override
public void setElevation(View view, float elevation) {
}
周囲に影のある画像上に定義されたストレッチ可能なパッチを使用して、9 パッチの画像を作成します。
この 9 パッチの画像をボタンの背景として追加し、影が見えるようにします。
事前定義された 9 パッチ (.9.png) 画像は、ここまたはここから選択してカスタマイズし、プロジェクトのドローアブルにコピーできます。
@Ranjith Kumarの回答を追加するには
ドローアブルに背景色 (ボタンの背景色の例) を追加するには、プログラムでドローアブルを取得する必要があります。
最初にドローアブルを取得します
Drawable drawable = getResources().getDrawable(android.R.drawable.dialog_holo_light_frame);
色を設定する
drawable.setColorFilter(new PorterDuffColorFilter(getResources().getColor(R.color.color_primary), PorterDuff.Mode.MULTIPLY));
次に、それをビューに設定します。
view.setBackgroundDrawable(drawable);
誰かが探している場合に備えて。
このようなドローアブルを宣言することで、簡単にシミュレートできます-
shadow.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
>
<gradient android:type="linear" android:angle="270" android:startColor="#b6b6b6" android:endColor="#ffffff"/>
</shape>
そしてそれを int ur main xml のように使用します -
android:background="@drawable/shadow"