@RemotableViewMethod
	public void setEnabled(boolean enabled) {
		if (enabled == isEnabled()) return;

		setFlags(enabled ? ENABLED : DISABLED, ENABLED_MASK);

		/*
		 * The View most likely has to change its appearance, so refresh
		 * the drawable state.
		 */
		refreshDrawableState();

		// Invalidate too, since the default behavior for views is to be
		// be drawn at 50% alpha rather than to change the drawable.
		invalidate(true);

		if (!enabled) {
			cancelPendingInputEvents();
		}
	}



可以看到setEnable(false) 将View的flag打上了DISABLED.

public boolean onKeyDown(int keyCode, KeyEvent event) {
..............................................................

		if (KeyEvent.isConfirmKey(keyCode)) {
			if ((mViewFlags & ENABLED_MASK) == DISABLED) {
				return true;
			}
...................................................................
	}



public boolean onKeyUp(int keyCode, KeyEvent event) {
		if (KeyEvent.isConfirmKey(keyCode)) {
			if ((mViewFlags & ENABLED_MASK) == DISABLED) {
				return true;
			}
...................................................................
	}



private boolean isHoverable() {
.................................................................
		if ((viewFlags & ENABLED_MASK) == DISABLED) {
			return false;
		}
....................................................................
	}



public boolean onTouchEvent(MotionEvent event) {
		final int viewFlags = mViewFlags;

		if ((viewFlags & ENABLED_MASK) == DISABLED) {
			if (event.getAction() == MotionEvent.ACTION_UP && (mPrivateFlags & PFLAG_PRESSED) != 0) {
				setPressed(false);
			}
............................................................
}



可以看到,Enable false 把key event和 touch event都屏蔽掉了。