Android 为什么我在背景选择器上有双重涟漪效应?

Android 为什么我在背景选择器上有双重涟漪效应?,android,android-listview,material-design,android-selector,rippledrawable,Android,Android Listview,Material Design,Android Selector,Rippledrawable,我对新闻项目产生了双重涟漪效应(项目中心的涟漪效应和触摸点的第二涟漪效应),以下是我问题的屏幕截图: 但这只发生在第一个项目上,其他项目的连锁反应效果良好。我正在关注这一点,我确实意识到他们也有同样的问题 以下是我正在使用的资源: drawable-v21/touch_selector.xml <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state

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

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

以下是我正在使用的资源:

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" />
...
。。。
...
我如何修复这个双重涟漪效应的项目按下?(同样,这只发生在第一项中,其他项工作正常)

以下是源代码:

@epool

我下载了你的项目并运行了它。 问题不仅出现在列表的第一项上,也出现在其他项上。我确实注意到这是不一致的,虽然它不是每次都发生

看起来您可能已经在另一个地方设置了涟漪效应,或者至少启用了涟漪效应

如果您只是删除下面的代码行,它应该可以正常工作!=]

<item android:state_pressed="true">
   <ripple android:color="@color/grey" />
</item>

仅在旁注中,我多次单击列表中的不同项目以查看它们的行为,通过这样做,我得到了以下错误:

java.lang.ArrayIndexOutofBounds异常:src.length=2048 srcPos=2048 dst.length=2048 dstPos=0 length=2047

这在您的Binder.java文件中,在线446。所以你可能想解决这个问题


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

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


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

我认为如果不在列表项上设置
背景,而是在列表视图本身上将其设置为
列表选择器,则可以避免双重波动,或者在项目的背景选择器中不包括按下的状态。

错误必须在代码中的其他地方。此外,还需要更多细节。例如,它是列表中的第一个项目,还是第一个按下的项目。您是在注册两个重叠的片段还是Recyclerviews?@easycheese是的,它是列表中的第一项,而不是第一项。该活动有两个片段,左侧片段是列表所在的位置,右侧片段是具有相同问题的另一个列表。我现在不在笔记本电脑中,但如果有必要,我可以在以后添加更多代码,代码与udacity github链接非常相似。以下是源代码:我删除了ripple项,可以正常工作,但当前选中的项(蓝色)在按下时不再具有涟漪效果。奇怪。当我运行你的项目时,我没有看到任何蓝色的东西。。。我将“android:state_activated”改为“android:state_selected”进行测试,在搜索艺术家后,我确实看到了一个蓝色项目。即使在那个项目上,它也对我有效。我不确定你在使用什么设备,但理论上,在使用sw-600dp的平板电脑上,行应该是蓝色的。让我在不同的设备上进行测试。我过一会儿再打给你。