自定义一个HorizontalScrollView类,主要为了让这个HorizontalScrollView不能鼠标点击,不能左右按键,并且没有焦点。
public class ImageMoveHorizontalScrollView extends HorizontalScrollView {private boolean mSmoothScrollingEnabled = true;private final Rect mTempRect = new Rect();public ImageMoveHorizontalScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public ImageMoveHorizontalScrollView(Context context) {super(context);}/*** 关闭鼠标点击的效果,重写该方法*/@Overridepublic boolean onTouchEvent(MotionEvent ev) {return false;}/*** 关闭左右按键效果,重写该方法*/@Overridepublic boolean executeKeyEvent(KeyEvent event) {return false;}/*** 去除焦点选中*/@Overridepublic boolean pageScroll(int direction) {boolean right = direction == View.FOCUS_RIGHT;int width = getWidth();if (right) {mTempRect.left = getScrollX() + width;int count = getChildCount();if (count > 0) {View view = getChildAt(0);if (mTempRect.left + width > view.getRight()) {mTempRect.left = view.getRight() - width;}}} else {mTempRect.left = getScrollX() - width;if (mTempRect.left < 0) {mTempRect.left = 0;}}mTempRect.right = mTempRect.left + width;return scrollAndFocus(direction, mTempRect.left, mTempRect.right);}private boolean scrollAndFocus(int direction, int left, int right) {boolean handled = true;int width = getWidth();int containerLeft = getScrollX();int containerRight = containerLeft + width;boolean goLeft = direction == View.FOCUS_LEFT;
//主要在这边,注释掉下面的代码// View newFocused = findFocusableViewInBounds(goLeft, left, right);// if (newFocused == null) {// newFocused = this;// }if (left >= containerLeft && right <= containerRight) {handled = false;} else {int delta = goLeft ? (left - containerLeft) : (right - containerRight);doScrollX(delta);}//去除 滚动后 foucus的// if (newFocused != findFocus())// newFocused.requestFocus(direction);return handled;}/*** Smooth scroll by a X delta* @param delta the number of pixels to scroll by on the X axis*/private void doScrollX(int delta) {if (delta != 0) {if (mSmoothScrollingEnabled) {smoothScrollBy(delta, 0);} else {scrollBy(delta, 0);}}}}
使用:
sc.pageScroll(View.FOCUS_RIGHT); //向右翻一页
总结
以上是生活随笔为你收集整理的安卓开发37:自定义的HorizontalScrollView类,使其pageScroll的时候焦点不选中的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。