44

Google は、ここで Lollipop に標高効果を表示するいくつかの優れた方法を示しています。

android:elevation="2dp"

ボタン用、

android:stateListAnimator="@anim/button_state_list_animator"

サードパーティのライブラリを使用せずに Lollipop より前のバージョンで標高効果を模倣するにはどうすればよいですか?

4

7 に答える 7

82

公式の方法でロリポップ前の標高を模倣できます。

私は同じ効果を達成するために、

  android:background="@android:drawable/dialog_holo_light_frame"

私のテスト済み出力:

ここに画像の説明を入力

参照 - https://stackoverflow.com/a/25683148/3879847

ユーザー @Repo に感謝します。

更新:このドローアブルの色を変更したい場合は、以下の@Irfanの回答を試してください↓

https://stackoverflow.com/a/40815944/3879847

于 2015-06-19T06:51:45.130 に答える
22

正式な方法ではロリポップ前の標高を模倣することはできません。

一部のドローアブルを使用して、コンポーネントに影を作成できます。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) {

}
于 2015-06-11T12:34:05.500 に答える
8

周囲に影のある画像上に定義されたストレッチ可能なパッチを使用して、9 パッチの画像を作成します。

ここに画像の説明を入力

この 9 パッチの画像をボタンの背景として追加し、影が見えるようにします。

事前定義された 9 パッチ (.9.png) 画像は、ここまたはここから選択してカスタマイズし、プロジェクトのドローアブルにコピーできます。

于 2015-06-22T08:11:06.900 に答える
6

@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);

誰かが探している場合に備えて。

于 2016-11-26T07:15:47.640 に答える
2

このようなドローアブルを宣言することで、簡単にシミュレートできます-

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"
于 2016-03-12T16:50:44.550 に答える