如何在使用horizontalscrollview滚动时实现中心锁定
我已经看过了 http://krishnalalstha.wordpress.com/tag/horizontal-scrollview-with-auto-center-lock/ 但这不是我需要的,我需要自动锁定中心
我有一个包含3种不同布局的滚动视图(第1个:整个宽度,第2个:整个宽度,第3个:半个屏幕),我也尝试使用图库但是我无法移除左侧和右侧的空间,
谢谢
答案 0 :(得分:1)
您正在寻找的几乎所有的示例: http://www.velir.com/blog/index.php/2010/11/17/android-snapping-horizontal-scroll/
我认为这很好解释,所以你应该能够根据你的用例量身定做。
但是:常量SWIPE_THRESHOLD_VELOCITY设置得太高。 50在我的案件中工作。只需尝试一下,直到你满意为止。
编辑: 或者,您可能希望使用ViewPager。它可能更容易,更适合"画廊"用例。
答案 1 :(得分:0)
Java:
horizontalScrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) {
int horizontalWidth = v.getMeasuredWidth();
int horizontalHeight = v.getMeasuredHeight();
int centerX = v.getScrollX() + horizontalWidth / 2;
int centerY = horizontalHeight / 2;
Rect hitRect = new Rect();
for (int i = 0; i < horizontalContainer.getChildCount(); i++) {
View child = horizontalContainer.getChildAt(i);
child.getHitRect(hitRect);
if (hitRect.contains(centerX, centerY)) {
int x = (child.getLeft() - (horizontalWidth / 2)) + (child.getWidth() / 2);
horizontalScrollView.smoothScrollTo(x, 0);
break;
}
}
return true;
} else {
return false;
}
}
});
其中xml是
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="22dp"
android:gravity="center_vertical">
<LinearLayout
android:id="@+id/horizontalContainer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal" />
</HorizontalScrollView>
这个容器可能由孩子们的syubykh容纳,具有任何大小