自定義一個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的时候焦点不选中的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。