- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ListView ,其中列表项具有以下可绘制背景
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/transparent" />
<item android:state_pressed="true"
android:drawable="@drawable/collection_item_gradient" />
</selector>
当按下列表项时,它会应用渐变。然而,如果用户随后发起了一个多点触摸事件(比如在 ListView 之外的某处放置了一个额外的手指),则列表项可能会保持按下状态,直到 ListView 接收到另一个触摸事件。
有解决办法吗?
最佳答案
这在某种程度上取决于您要完成的任务...
如果您希望在用户两根手指按下时显示第三种背景类型,则没有可直接引用来完成的可绘制状态。您将不得不合作在触摸模式中不常使用的现有状态之一(例如选定状态),并在列表项的对象上实现自定义触摸处理程序以设置该状态。例如,执行 onTouchEvent()
在每个列表项的 View 中(或者添加 onTouchListener()
如果您没有自定义类),查找 ACTION_POINTER_DOWN
事件告诉你第二根手指掉下来了,然后调用setSelected()
在 View 上触发您为 android:state_selected
设置的可绘制对象在你的<selector>
.
如果只想清除这种情况下的状态,可以在检测到多于一根手指时取消触摸事件。在这种情况下,您正在考虑自定义 ListView.onInterceptTouchEvent()
寻找 ACTION_PONTER_DOWN
的方法事件和返回 true
.这将教 ListView
用第二根手指从它的子项中窃取触摸,这将取消列表项的按下状态。确保回拨至 super
在这种情况下,您不会破坏所有现有逻辑 ListView
用于滚动等。
注意现有 AbsListView
的情况实现可能会妨碍您。例如,当前执行 onIntercepTouchEvent()
寻找 ACTION_POINTER_UP
为了将主触摸手指从第一个切换到第二个。如果您没有意识到,此行为可能会在您的自定义中导致奇怪的伪影。
HTH.
关于Android StateListDrawable 在 MultiTouch 之后保持按下状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8662271/
所以我制作了这两个按钮。 我希望能够单击我制作的按钮,并将按钮更改为原始按钮的白色图像,而不是切换按钮中的打开和关闭状态。 到目前为止,我所知道的只是与 stateListDrawable xml 有
我正在创建一个 android 应用程序,它从互联网上动态下载图像,然后将它们放置到 ImageView 上,允许用户设置默认图像和突出显示的图像。为此,我下载数据并将其保存到一个文件中,每当需要图像
我正在尝试以编程方式将 StateListDrawable 设置为库项目的自定义 View 的背景。这是我正在做的: final TypedArray a = getContext().obtainS
我有一个自定义按钮,并以编程方式更改了它的按下颜色和默认颜色。 public class CustomApplicationButton extends Button { public CustomA
我在 res/drawable/my_background.xml 中定义了一个 drawable。 my_background.xml 是:
这是我的自定义选择器(StateListDrawable) common_cell_background 和 common_cell_background_
我想创建自定义按钮以在 TabHost 中使用。我一直在尝试只使用相同的图像资源 (png),但根据状态改变滤色器。所以我做了这个作为自定义按钮的布局: 在我的 Activi
我有一个内置于 ListActivity 中的 listView。我希望在按下项目时改变我的行的背景。 所以我在我的 ListActivity 中写道:this.getListView().setSe
我有一个 GridView 来显示一些对象,并且在视觉上每个对象都会有一个图像图标和一个文本标签。我还希望图像图标在单击时具有一些“推送和弹出”效果,即按下时,图像会向右下方向移动一小段距离,释放时会
我正在尝试制作一个通用框架函数,当按下/聚焦/选择/等时,使任何 Drawable 都高亮显示。 我的函数接受一个 Drawable 并返回一个 StateListDrawable,其中默认状态是 D
假设我有一个 StateListDrawable。我想在其中添加 2 个可绘制对象:第一个如果被单击,第二个用于任何其他状态。 我试过如下(伪代码): Drawable clickdDrawable
似乎 StateListDrawable 将忽略应用于它们包含的可绘制对象的颜色过滤器。例如: StateListDrawable sld = new StateListDrawable(); Dra
它们具有按下、聚焦、禁用等状态,但是否可以创建自定义状态以反射(reflect)我自己的一些自定义条件? 例如,假设您有一个姓名列表。有些人属于某个类别,应该在视觉上以不同的方式表示。然后,这些人的行
我有以下按钮选择器(有 2 种状态,常规和按下): 我的按钮有以下指定背景作为上面的选择器: 我需要在加载 Activit
我正在使用以下代码- StateListDrawable states2 = new StateListDrawable(); states2.clearColorFilter();
我有以下按钮选择器(有 2 种状态,常规状态和按下状态): 我的按钮具有以下内容,将背景指定为上述选择器: 当 Activ
我在自定义 View 上遇到了 StateListDrawable 的大问题。我有一个直接从 LinearLayout 继承的自定义 View ,在它的 XML 布局中,背景是一个简单的状态列表可绘制
我需要访问 ClipDrawable设置剪辑电平。这是可绘制对象: @drawable/left_arrow: @drawable/rotated_square:
这是我的代码: public void setHoverEffect(final Button button,int normalImageId, int hoverImageId) {
我有一个 ListView ,其中列表项具有以下可绘制背景 当按下列表项时,它会应用渐变。然而,如果用户随后发起了一个多点触摸事件(比如在 ListView 之外的某处放置了一
我是一名优秀的程序员,十分优秀!