web-dev-qa-db-ja.com

Android AppCompat 21標高

Lollipop以前のデバイスでViewにラッピングせずにCardViewに標高を追加する方法はありますか?

74
Eliezer

ViewCompat.setElevation(View, int)は現在、シムを作成しません。

現在、高度をシミュレートする唯一の方法は、v21より前のシャドウを適用することです。 valuesでスタイル/レイアウト/ドローアブルを定義し、values-v21でオーバーライドします。ボタンにはスタイルのオーバーライドを使用します。レイアウトの場合、通常、参照オーバーライドを使用します(ドロアブルを削除するには@nullを使用します)。

将来的には、サポートライブラリの更新によりシムが追加されることを願っています。

このredditスレッド は、上記の更新を追跡します。

編集

新しい サポートデザインライブラリ は、実際にはフローティングアクションボタンのシムを作成します。

73
Derk-Jan

これは、Lollipop以前のデバイスでToolbarの下に影を追加する方法の例です。

enter image description here

レイアウトは次のようになります。

<RelativeLayout
    Android:id="@+id/toolbar_container"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_alignParentTop="true" >

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:animateLayoutChanges="true"
        Android:background="?attr/colorPrimary"
        Android:minHeight="?attr/actionBarSize"
        app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />

    <View
        Android:id="@+id/toolbar_shadow"
        Android:layout_width="match_parent"
        Android:layout_height="@dimen/toolbar_shadow"
        Android:layout_below="@id/toolbar"
        Android:background="@drawable/toolbar_dropshadow" />
</RelativeLayout>

そして影は:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle" >

    <gradient
        Android:angle="90"
        Android:endColor="#88444444"
        Android:startColor="@Android:color/transparent" />

</shape>
64
thiagolr

を使用して同じ効果を達成します、

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

テスト済みの出力:

enter image description here

リファレンス- https://stackoverflow.com/a/25683148/3879847

更新:このドロアブルの色を変更したい場合は、@ Irfan answerを試してください

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

47
Ranjith Kumar