设置FloatingActionButton涟漪

时间:2016-04-14 09:10:42

标签: android android-animation material-design floating-action-button

我试图将FloatingActionButton纹波设置为与this

类似的东西

来自材料设计。

问题是我只得到一个没有波纹的“平面样式”,它只是将按钮从我的情况下改变为白色到橙色而没有上面链接中显示的动画。

我在这里听到了答案:

FloatingActionButton example with Support Library

但是我的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"/>

爪哇:

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

我在FAB上尝试了这种方法,但它似乎没有用。我也尝试了我提供的链接中的步骤

5 个答案:

答案 0 :(得分:29)

将以下2个属性添加到浮动操作按钮xml代码

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

使FAB可点击添加纹波颜色

答案 1 :(得分:4)

您可以像我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主题小部件集:

所以你可以试试其中一个或谷歌搜索其他&#34;材料小部件&#34;左右......

答案 2 :(得分:1)

请尝试使用:

,而不是使用透明
app:rippleColor="@color/colorAccentLight"

其中colorAccentLight是您当前强调色的明亮色调。就我而言,我用过:

<color name="colorAccent">#E040FB</color>
<color name="colorAccentLight">#E1BEE7</color>
colors.xml 文件中的

...或者,您可以随时将其设置为其他随机颜色(当前强调颜色除外)以进行测试。

答案 3 :(得分:0)

您的波纹颜色是透明的。我希望你的涟漪正常显示但是因为它是看不见的,你看不到它。

请参阅此答案以获得解决方案。

Android: can you have a ripple effect whose default state color is transparent?

答案 4 :(得分:0)

ayush@devbox:/code/compsize$ sudo compsize /opt
Processed 54036 files, 42027 regular extents (42028 refs), 27150 inline.
Type       Perc     Disk Usage   Uncompressed Referenced  
Data        82%      5.3G         6.4G         6.4G       
none       100%      4.3G         4.3G         4.3G       
zlib        37%      427M         1.1G         1.1G       
lzo         56%      588M         1.0G         1.0G