0
正如标题所示,每当我在视图上调用setselected时,它也将触发setSelected在所有子视图上的setselected。如何防止这种情况发生?Android setselected查看视图也触发子视图
正如标题所示,每当我在视图上调用setselected时,它也将触发setSelected在所有子视图上的setselected。如何防止这种情况发生?Android setselected查看视图也触发子视图
你不能。
看看它是如何实现的(从here):
public void setSelected(boolean selected) {
//noinspection DoubleNegation
if (((mPrivateFlags & PFLAG_SELECTED) != 0) != selected) {
mPrivateFlags = (mPrivateFlags & ~PFLAG_SELECTED) | (selected ? PFLAG_SELECTED : 0);
if (!selected) resetPressedState();
invalidate(true);
refreshDrawableState();
dispatchSetSelected(selected);
notifyViewAccessibilityStateChangedIfNeeded(
AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
}
}
/**
* Dispatch setSelected to all of this View's children.
*
* @see #setSelected(boolean)
*
* @param selected The new selected state
*/
protected void dispatchSetSelected(boolean selected) {
}
有没有什么地方会从发生在顶层停止呼叫,这取决于具体的实施如何处理/传播的信息..
它看起来像dispatchSetSelected在ViewGroup级别上实现。我所做的是在自定义视图中覆盖它,它现在可以工作。感谢指针。 – Anonymouse 2014-12-11 02:01:43