如何在 horizontalScrollView 中通过平滑滚动使视图居中
How to center views with a smooth scroll in an horizontalScrollView
当 element/view 为 clicked/tabbed 时,我试图在 horizontalScrollView 中通过平滑滚动使视图居中。
这是我为实现这一目标所做的最新尝试。
代码:
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 horizontalScrollView 的项目视图所在的位置。
名为 barsScroller 的变量是 horizontalScrollView。
这里是 xml 部分,其中包含视图的 horizontalScrollView 和线性布局是:
<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>
这里是 HorizontalScrollView 的项目 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以图像形式显示您失败的测试结果。
当 element/view 为 clicked/tabbed 时,我试图在 horizontalScrollView 中通过平滑滚动使视图居中。
这是我为实现这一目标所做的最新尝试。
代码:
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 horizontalScrollView 的项目视图所在的位置。 名为 barsScroller 的变量是 horizontalScrollView。
这里是 xml 部分,其中包含视图的 horizontalScrollView 和线性布局是:
<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>
这里是 HorizontalScrollView 的项目 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以图像形式显示您失败的测试结果。