2014-11-21 152 views
20

我一直在開發棒棒糖(API 21)的應用程序。棒棒糖視圖的波紋效果

當我將Button顏色更改爲某種顏色時,連鎖效應不起作用。

我發現了一些第三方庫的漣漪效應,但我想用標準API來做到這一點。

answer也沒有幫助。

XML:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="New Button" 
    android:id="@+id/button" 
    android:layout_below="@+id/textView" 
    android:background="@android:color/holo_blue_bright" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="76dp" 
    /> 

回答

30

你有你的按鈕的背景設爲RippleDrawable您可以在XML定義。 (我將其命名爲holo_blue_ripple.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@android:color/white"> <!-- ripple color --> 

    <item android:drawable="@android:color/holo_blue_bright"/> <!-- normal color --> 

</ripple> 

然後用android:background="@drawable/holo_blue_ripple"引用它。

+1

感謝您的幫助。但我想知道如何使用這種技術來應用角半徑? 我在'holo_blue_ripple.xml'添加下列行,但它不工作: ' <形狀機器人:形狀= 「矩形」> <拐角機器人:半徑= 「15dip」/> ' – zaingz 2014-11-22 06:44:41

+3

我想出瞭解決方案。這裏是: '<! - ripple color - - > <形狀 機器人:形狀= 「矩形」> <拐角機器人:半徑= 「5DP」/> <項機器人:抽拉= 「@機器人:彩色/ holo_blue_dark」 /><! - normal color - > ' – zaingz 2014-11-22 06:58:44

+0

@zaingz Would this soluti上也爲9補丁工作? – 2014-12-01 09:12:12

27

嘗試這種情況:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="?attr/selectableItemBackground" 
    ... 
/> 

基於用於圓形連鎖反應this tutorialthe official docs

+1

除非你想定製你的漣漪效應,在我看來這是最簡單的解決方案。 – 2015-08-17 11:55:31

+1

@MateusGondim但你不能改變按鈕的顏色... – 2015-08-24 15:48:28

+0

@joaquin是的,你說得對。 – 2015-08-24 17:43:40

6

另外?attr/selectableItemBackgroundBorderless canbe。

+0

不適用於我:/效果是 - 單擊時顏色改變。 我的android版本只有5.0。你能幫忙嗎? – UrviG 2017-07-06 04:15:01

1

試試這個屬性

android:background="?attr/selectableItemBackground" 

這是最簡單的方式展現在您的視圖/佈局連鎖反應。

+0

不適用於我:/效果是 - 單擊時顏色改變。 我的android版本只有5.0。你能幫忙嗎? 將此添加到按鈕 – UrviG 2017-07-06 04:16:03