如何在 horizo​​ntalScrollView 中通过平滑滚动使视图居中

How to center views with a smooth scroll in an horizontalScrollView

当 element/view 为 clicked/tabbed 时,我试图在 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 是 class horizo​​ntalScrollView 的项目视图所在的位置。 名为 barsScroller 的变量是 horizo​​ntalScrollView。

这里是 xml 部分,其中包含视图的 horizo​​ntalScrollView 和线性布局是:

        <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>

我希望你能理解我正在努力实现的目标,也许能在正确的方向上帮助我。

任何帮助将不胜感激。

尝试这样的事情:

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);
}

如果这仍然无效,您可能想post以图像形式显示您失败的测试结果。