zoukankan      html  css  js  c++  java
  • 解决Item控件抢占焦点

    http://www.imooc.com/learn/372

    在抢占焦点的控件加上

    方法一:

      android:focusable="false"  

    方法二:

      在外界布局上

      android:descendantFocusability="blocksDescendants"

    原因参考

    android.widget.AbsListView

    @Override
    public boolean onTouchEvent(MotionEvent ev) {

      

    case MotionEvent.ACTION_UP: {
    switch (mTouchMode) {
    case TOUCH_MODE_DOWN:
    case TOUCH_MODE_TAP:
    case TOUCH_MODE_DONE_WAITING:
    final int motionPosition = mMotionPosition;
    final View child = getChildAt(motionPosition - mFirstPosition);
    if (child != null && !child.hasFocusable()) {
    if (mTouchMode != TOUCH_MODE_DOWN) {
    child.setPressed(false);
    }

    if (mPerformClick == null) {
    mPerformClick = new PerformClick();
    }

    final AbsListView.PerformClick performClick = mPerformClick;
    performClick.mChild = child;
    performClick.mClickMotionPosition = motionPosition;
    performClick.rememberWindowAttachCount();

    mResurrectToPosition = motionPosition;

    if (mTouchMode == TOUCH_MODE_DOWN || mTouchMode == TOUCH_MODE_TAP) {
    final Handler handler = getHandler();
    if (handler != null) {
    handler.removeCallbacks(mTouchMode == TOUCH_MODE_DOWN ?
    mPendingCheckForTap : mPendingCheckForLongPress);
    }
    mLayoutMode = LAYOUT_NORMAL;
    if (!mDataChanged && mAdapter.isEnabled(motionPosition)) {
    mTouchMode = TOUCH_MODE_TAP;
    setSelectedPositionInt(mMotionPosition);
    layoutChildren();
    child.setPressed(true);
    positionSelector(child);
    setPressed(true);
    if (mSelector != null) {
    Drawable d = mSelector.getCurrent();
    if (d != null && d instanceof TransitionDrawable) {
    ((TransitionDrawable) d).resetTransition();
    }
    }
    postDelayed(new Runnable() {
    public void run() {
    child.setPressed(false);
    setPressed(false);
    if (!mDataChanged) {
    post(performClick);
    }
    mTouchMode = TOUCH_MODE_REST;
    }
    }, ViewConfiguration.getPressedStateDuration());
    } else {
    mTouchMode = TOUCH_MODE_REST;
    }
    return true;
    } else if (!mDataChanged && mAdapter.isEnabled(motionPosition)) {
    post(performClick);
    }
    }
    mTouchMode = TOUCH_MODE_REST;
    break;

  • 相关阅读:
    【SCOI 2011】 糖果
    【POJ 3159】 Candies
    【POJ 1716】 Integer Intervals
    【POJ 2983】 Is the information reliable?
    【POJ 1364】 King
    【POJ 1201】 Intervals
    【POJ 1804】 Brainman
    6月10日省中提高组题解
    【POJ 3352】 Road Construction
    【POJ 1144】 Network
  • 原文地址:https://www.cnblogs.com/exmyth/p/4567245.html
Copyright © 2011-2022 走看看