我对按下项目产生双重连锁效果(从项目中心开始产生连锁效果,从触摸点开始产生第二个效果),这是我问题的截图:
但这只发生在第一项上,而在其他项中,涟漪效应效果很好。我正在关注这个udacity project,我确实意识到他们有同样的问题。
以下是我正在使用的资源:
可绘制-V21 / touch_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<ripple android:color="@color/grey" />
</item>
<item android:drawable="@color/light_blue" android:state_activated="true" />
<item android:drawable="@android:color/transparent" />
</selector>
row_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/touch_selector"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal">
...
</LinearLayout>
fragment_main.xml
...
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@null"
tools:listitem="@layout/row_item" />
...
如何在按下的项目上修复此双重涟漪效果? (同样,这只发生在第一项,其他项目运作良好)。
以下是源代码: https://github.com/epool/SpotifyStreamer/tree/stage-2
答案 0 :(得分:0)
@epool,
我下载了你的项目并运行它。 问题不仅发生在列表的第一项,也发生在其他项目上。我确实注意到它不一致,但并不是每次都发生。
看起来你可能已经在不同的地方设置了涟漪效果,或者至少启用了涟漪效果。
如果您只是删除下面的代码行,它应该可以正常工作! =]
<item android:state_pressed="true">
<ripple android:color="@color/grey" />
</item>
在旁注中,我在列表的不同项目上多次单击以查看它们的行为方式,通过这样做,我收到以下错误:
java.lang.ArrayIndexOutOfBoundsException:src.length = 2048 srcPos = 2048 dst.length = 2048 dstPos = 0 length = 2047
Binder.java 文件中的 446 。所以你可能想解决这个问题。
如果您有任何其他问题,请告诉我。
答案 1 :(得分:0)
我也有同样的问题,经过几个小时的搜索后,我意识到涟漪效应会被触发两次,因为我将v.setEnabled(false)
然后v.setEnabled(true)
置于onClickListener
内以禁用onClick正在进行中的视图。
删除它们解决了我的问题。
答案 2 :(得分:0)
我认为,如果不是在列表项上设置background
而是在列表视图本身上将其设置为listSelector
,或者不包括{{1} }在该项目的背景选择器中。