Android 为什么我在背景选择器上有双重涟漪效应?
我对新闻项目产生了双重涟漪效应(项目中心的涟漪效应和触摸点的第二涟漪效应),以下是我问题的屏幕截图: 但这只发生在第一个项目上,其他项目的连锁反应效果良好。我正在关注这一点,我确实意识到他们也有同样的问题 以下是我正在使用的资源: drawable-v21/touch_selector.xmlAndroid 为什么我在背景选择器上有双重涟漪效应?,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
<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的平板电脑上,行应该是蓝色的。让我在不同的设备上进行测试。我过一会儿再打给你。