2

我对新闻项目有双重涟漪效应(项目中心的涟漪效应和触摸点的第二次),这是我的问题的屏幕截图:

在此处输入图像描述

但这只会发生在第一个项目上,在其他项目中,连锁反应效果很好。我正在关注这个udacity 项目,我确实意识到他们有同样的问题。

这是我正在使用的资源:

drawable-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

4

3 回答 3

1

我也遇到了同样的问题,在寻找了几个小时之后,我意识到涟漪效应被触发了两次,因为我在 onClick 正在进行时将v.setEnabled(false)v.setEnabled(true)放入以禁用视图。onClickListener

删除它们为我解决了问题。

于 2016-12-31T23:59:32.697 回答
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 长度=2047

那在您的Binder.java文件的第446行。所以你可能想解决这个问题。

如果您有任何其他问题,请告诉我。

于 2015-06-25T15:40:07.547 回答
0

background我认为如果不是在列表项上设置 ,而是listSelector在列表视图本身上设置 ,或者state_pressed在项目的背景选择器中不包括 ,则可以避免双重波纹。

于 2018-08-11T20:42:40.067 回答