2015-09-14 85 views
1

我在循環視圖中有一個列表項目,我想要在整個元素中獲得漣漪效果 - 目前我的GIF與紋波重疊。我不知道如何解決這個問題,經過研究已經嘗試了很多方法,但沒有成功。imageView/GIF疊加的Android紋波效果

example of the non working ripple effect

這裏是在此基礎上我建立每個項目的具體XML文件。

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:background="@drawable/selector" 
android:clickable="false"> 

<pl.droidsonroids.gif.GifTextView 
    android:layout_width="84dp" 
    android:layout_height="84dp" 
    android:paddingTop="3dp" 
    android:paddingBottom="3dp" 
    android:paddingRight="1dp" 
    android:paddingLeft="1dp" 
    android:background="@drawable/a_present_for_you" 
    /> 

<TextView 
    android:id="@+id/textView" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:textColor="@color/black" 
    android:textSize="16sp" 
    android:gravity="center_vertical" 
    android:drawableRight="@drawable/ic_lock_open_blue_24dp" 
    android:drawablePadding="16dp"> 
</TextView> 

</LinearLayout> 

任何想法?

回答

4

如何使用FrameLayout?將這兩個元素用FrameLayout代替LinearLayout,並用您的自定義選擇器設置此佈局的android:foreground

<?xml version="1.0" encoding="utf-8"?> 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:foreground="@drawable/selector"> 

<pl.droidsonroids.gif.GifTextView 
android:layout_width="84dp" 
android:layout_height="84dp" 
android:paddingTop="3dp" 
android:paddingBottom="3dp" 
android:paddingRight="1dp" 
android:paddingLeft="1dp" 
android:background="@drawable/a_present_for_you" 
/> 

<TextView 
android:id="@+id/textView" 
android:paddingLeft="16dp" 
android:paddingRight="16dp" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:textColor="@color/black" 
android:textSize="16sp" 
android:gravity="center_vertical" 
android:drawableRight="@drawable/ic_lock_open_blue_24dp" 
android:drawablePadding="16dp"> 
</TextView> 

</FrameLayout> 
+0

剛剛測試它,效果很好!但最終我採取了讓GIF重疊漣漪的方式,因爲我意識到它在正確的背景下看起來相當出色。 – dabo

+0

@ david145太棒了!很高興聽到它的工作! –

0

因爲在同一個LinearLayout中有兩個不同的背景,所以Ripple效果不會傳播。你可以嘗試做的是爲整個LinearLayout設置漣漪效應。

+0

是的,我認爲這是問題所在,但我不能以其他方式顯示gif。試過用'android:drawableLeft =「@ drawable/a_present_for_you」'而不是'android:background =「@ drawable/a_present_for_you」'但它仍然重疊。將它設置爲整個LinearLayout的意思是什麼?以爲我已經通過在頂部設置了'android:background =「@ drawable/selector」'完成了這項工作。 – dabo

+0

你可以發佈你的'drawable/selector'代碼嗎? –

+0

'<?xml version =「1.0」encoding =「utf-8」?> <項機器人:ID =」 @機器人:ID /掩碼 「> <顏色機器人:顏色=」 @機器人:顏色/白」 /> ' – dabo

1

只需使用這些以下屬性: -

android:background="?attr/selectableItemBackground" 簡單的連鎖反應。 對於圓形漣漪效應使用 android:background="?attr/selectableItemBackgroundBorderless"

裏面的主根。