web-dev-qa-db-ja.com

Androidサポートデザインライブラリで提供されるFABに影を追加する方法は?

タイトルはかなり自明です。

次のコードは、フローティングアクションボタンの下に影をレンダリングしません。影をレンダリングするために何ができますか?この機能はAPI 21+でもサポートされていませんか?

<Android.support.design.widget.FloatingActionButton
    Android:layout_height="wrap_content"
    Android:layout_width="wrap_content"
    Android:src="@drawable/ic_add"
    Android:clickable="true" />

注:Android:elevationを追加しても、API 21にシャドウは追加されません。

Example screenshot

Dandar3の例のスクリーンショット: https://github.com/dandar3/Android-support-design

53
Rolf ツ

app:borderWidth="0dp"を設定するだけで、この問題を解決できます。

注:xmlns:app="http://schemas.Android.com/apk/res-auto"をルートレイアウトに追加することを忘れないでください。

この issue は、Androidデザインライブラリの次のリリースで修正される必要があります。

92
Dmytro Danylyk

API 21以降の場合、app:borderWidth="0dp"およびapp:elevation="[number]dp"。必要な影のサイズを与える標高を設定します。

Example of values for parameter "elevation"

API 21+のコードの例を次に示します。

<Android.support.design.widget.FloatingActionButton
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/locate_user_FAB"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:src="@drawable/location_off"
    app:elevation="6dp"
    app:borderWidth="0dp"
    Android:layout_above="@+id/take_taxi_FAB"
    app:backgroundTint="@color/colorAccentGrey">

21以下(Android 4)のAPIについて覚えておくべき重要なことの1つは、互換性の観点から、FABはボタンの周囲にマージンを置いて影を描画することです。その後、あなたはそのようなことをする必要があります(私は現在このコードを使用しており、動作しています):

<Android.support.design.widget.FloatingActionButton
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/locate_user_FAB"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:src="@drawable/location_off"
    app:elevation="6dp"
    app:borderWidth="0dp"
    Android:layout_above="@+id/take_taxi_FAB"
    Android:layout_alignParentRight="true"
    Android:layout_marginRight="@dimen/map_FAB_marginRight"
    Android:layout_marginBottom="@dimen/locate_user_FAB_marginBottom"
    app:backgroundTint="@color/colorAccentGrey">

xmlns:app="http://schemas.Android.com/apk/res-auto" XMLの冒頭にありますが、念のためにそこに配置しました;]

32
j_gonfer

これでもまだ機能しない場合は、次の間に大きな違いがあります。

app:elevation="6dp"
app:borderWidth="0dp"

そして

app:borderWidth="0dp"
app:elevation="6dp"

何らかの理由で順序が重要であるようで(最初の順序は機能しますが、2番目は機能しません)、これはサポートライブラリ23.3.0からのものです

5
user4941227

アプリケーションタグのプロジェクトまたはライブラリのマニフェストを確認し、削除それら

Android:hardwareAccelerated="false"
Android:largeHeap="true"

ただし、これらのオプションが必要な場合、シャドウと変換アニメーションは機能しません

5
PanCrucian

それが役立つ場合、私は使用していました

Android:tint="@color/myColor"

の代わりに

Android:backgroundTint="@color/myColor".

色合いをbackgroundTintに置き換えると、影が戻ります。

0
narko