对视图的Android setselected调用也会触发子视图

时间:2014-12-11 00:57:44

标签: android

正如标题所示,每当我在一个视图上调用setselected时,它也会在所有它的子视图上触发setselected。如何防止这种情况发生?

1 个答案:

答案 0 :(得分:1)

你不能。

了解它是如何实现的(来自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) {
}

没有任何措施可以阻止呼叫在顶层发生,具体实现如何处理/传播该信息...