如何使用horizo​​ntalScrollView中的平滑滚动来居中视图

时间:2015-09-03 18:25:53

标签: java android horizontalscrollview smooth-scrolling

当点击/选项卡显示元素/视图时,我试图在horizo​​ntalScrollView中使用平滑滚动居中。

这是我最近的尝试。

代码:

public void scrollCenterBarItem(DrinkCategoryView toBarItem) {
    int endPos    = (int) toBarItem.getView().getX();
    int halfWidth = (int) toBarItem.getView().getWidth() / 2;

    barsScroller.smoothScrollTo(endPos + halfWidth, 0);
}

我不认为包含所有代码是必要的,但DrinkCategoryView是horizo​​ntalScrollView的items视图所在的类。 名为barsScroller的变量是horizo​​ntalScrollView。

这里是xml部分,其中包含视图的horizo​​ntalScrollView和linearlayout是:

        <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/bars_scroller"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:scrollbars="none">
            <LinearLayout
                android:id="@+id/drinksCategoryList"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </HorizontalScrollView>
    </RelativeLayout>

这是Horizo​​ntalScrollView的项目xml布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/drinkCategoryItem">


    <com.ivankocijan.magicviews.views.MagicTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/drinkCategoryItemTextView"
        android:textSize="18sp"
        app:typeFace="@string/opensans_regular"
        android:textColor="@color/black"
        android:padding="16dp" />
</LinearLayout>

我希望你能理解我想要达到的目标,也许能帮助我朝着正确的方向前进。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

尝试这样的事情:

public void scrollCenterBarItem(DrinkCategoryView toBarItem) {
    int endPos    = (int) toBarItem.getView().getX();
    int halfWidth = (int) toBarItem.getView().getWidth() / 2;

    barsScroller.smoothScrollTo(endPos + halfWidth - barScroller.getWidth() / 2, 0);
}

如果仍然无效,您可能希望以图像的形式发布失败的测试结果。