web-dev-qa-db-ja.com

FloatingActionButtonリップルの設定

私はFloatingActionButtonリップルを this のようなものに設定しようとしています

マテリアルデザインから。

問題は、波紋のない「フラットスタイル」のみを取得することです。上の例のリンクに示されているアニメーションなしで、ボタンを白からオレンジに変更するだけです。

私はここで答えに従いました:

サポートライブラリを使用したFloatingActionButtonの例

しかし、私のFABはまだ退屈です!

編集:私の現在のコードは:XML:

  <Android.support.design.widget.FloatingActionButton
     Android:id="@+id/item_activity_fab"
     Android:layout_width="64dp"
     Android:layout_height="64dp"
     Android:layout_marginRight="16dp"
     Android:src="@drawable/watch"
     app:borderWidth="0dp"
     app:elevation="6dp"
     app:fabSize="normal"
     app:layout_anchor="@id/item_activity_title_background"
     app:layout_anchorGravity="top|right|end"
     app:pressedTranslationZ="12dp"
     app:rippleColor="@Android:color/transparent"/>

Java:

    mAddToWatchListFAB.setRippleColor(ContextCompat.getColor(this, R.color.orange_6));

FABでその方法を試しましたが、うまくいかなかったようです。私も提供したリンクの手順を試しました

16
x10sion

次の2つのプロパティをフローティングアクションボタンのxmlコードに追加します

 app:rippleColor="@color/textcolor"
 Android:clickable="true"

fABをクリック可能にすると、リップルカラーが追加されます

38
Usman Iqbal

あなたが私のようにそれを実装することができます Gabriele Mariotti

あなたはこのようなことをすることができます:

<Button
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:background="@drawable/ripple"

    />

Ripple.xmlは次のとおりです。

<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android" 
                      Android:color="?android:colorControlHighlight">
        <item Android:id="@Android:id/mask">
            <shape Android:shape="oval">
                <solid Android:color="?android:colorAccent" />
            </shape>
        </item>
 </ripple>

here で述べたように、これはすべてのリップルのニーズに適用できます。

[〜#〜]更新[〜#〜]

<Android.support.design.widget.FloatingActionButton
     Android:id="@+id/item_activity_fab"
     Android:layout_width="64dp"
     Android:layout_height="64dp"
     Android:layout_marginRight="16dp"
     Android:src="@drawable/watch"
     Android:background="@drawable/ripple"
     app:borderWidth="0dp"
     app:elevation="6dp"
     app:fabSize="normal"
     app:layout_anchor="@id/item_activity_title_background"
     app:layout_anchorGravity="top|right|end"
     app:pressedTranslationZ="12dp"/>

そして、上記のripple.xmlを使用します。とても簡単!あなたがする必要があるのはマスクすることです:)

更新2

API 20以下の場合、波及効果を実装するオプションがあります。 Marcin Orlowski が言っている次のヒントをチェックしてください

幸い、すでに利用可能なカスタム実装はほとんどありません。

古いバージョンのAndroidと互換性のあるMaterlialをテーマにしたウィジェットセットを含みます。

これらのいずれかを試してみたり、他の「マテリアルウィジェット」でグーグルしたりすることができます...

4
Sibidharan

トランスペアレントを使用する代わりに、以下を使用してみてください:

app:rippleColor="@color/colorAccentLight"

colorAccentLightは、現在のアクセントカラーの明るいアクセントです。私の場合、私は使用しました:

<color name="colorAccent">#E040FB</color>
<color name="colorAccentLight">#E1BEE7</color>

colors.xmlファイル内...または、テストのために、常に現在のアクセントカラー以外のランダムな色に設定することもできます。

1
DaveNOTDavid
    <!--change this to any color-->
    app:rippleColor="@Android:color/transparent"

    <!-- try this line instead above -->
    app:rippleColor="@color/colorPrimary"
    Android:clickable="true"
1
user3607151

あなたの波紋の色は透明です。波紋は正常に表示されていると思いますが、見えないので見えません。

解決策については、この回答を参照してください。

Android:デフォルトの状態の色が透明であるリップルエフェクトを使用できますか?

0
Kuffs