gpt4 book ai didi

Android 高亮显示在 ListView 中的 Touch Down

转载 作者:太空狗 更新时间:2023-10-29 14:12:49 26 4
gpt4 key购买 nike

我已经在谷歌上搜索了几个小时,所以似乎有一堆问题,其中一些有公认的答案,但它们没有意义。

我有一个 ListView 并且我希望在 onTouch 时突出显示一个项目,但是如果用户移动他们的手指并且没有“完成”触摸(他们的手指在抬起时在 View 之外)然后突出显示应该离开。

如果我尝试通过在我的 View 中包含以下内容来使用触摸:

onTouch(View view, MotionEvent ev) {

....logic

//return false so this view keeps consuming the touches
return false;

}

触摸永远不会传播到 ListView 并且 onItemClick 永远不会被调用。我可以通过让我的适配器成为所有 View 的监听器并将“完整”触摸事件传递给适配器,适配器将它传递回 ListView 然后传递它来解决这个问题对任何人来说,但这看起来很可笑。

郑重声明,我要执行的突出显示是一个中等复杂的突出显示(涉及更改多个动态 subview 的背景,所以我不能只使用 StateDrawable.. .至少我不这么认为,StateDrawables 是否适用于多个 subview ?

iOS 在他们的 UITableViewDelegate 中非常简单地处理这个问题,这在 android 上如此困难似乎很疯狂,我一定是遗漏了什么。感谢您的帮助。

最佳答案

  • 在列表项上使用选择器。

像这样在 res/drawable 中定义一个选择器 'item_sel.xml':

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/my_highlight_color" android:state_pressed="true"/>
<item android:drawable="@color/my_default_color"/>
</selector>

其中 my_default_colormy_highlight_color 是您定义的颜色,例如在 res/values/colors.xml 中。然后将此选择器设置为您的 item View (不是 ListView)的背景,即:

 android:background="@drawable/item_sel.xml"

你应该可以从这里开始了。

关于Android 高亮显示在 ListView 中的 Touch Down,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25412892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com