我有一个水平滚动视图,里面有几个文本视图。在顶部布局上有一个指针,并且在指针下面的不同文本视图触发它们各自的片段。现在它可以自由滚动,你可以在2个文本视图之间停止它。我想要的是每次向左或向右滑动时滚动一定量,这将导致文本视图位于上方指针的中心。
我把它们放在相对布局中,这里是xml
<LinearLayout
android:id="@+id/ic_layout"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="20dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="20dp"
android:src="@drawable/arrow"/>
</LinearLayout>
<HorizontalScrollView
android:id="@+id/HorizontalScrollView1"
android:layout_width="300dp"
android:layout_height="75dp"
android:background="#FFF"
android:scrollbars="none"
android:fillViewport="false"
android:layout_below="@+id/ic_layout"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="100dp"
android:layout_marginRight="100dp">
<LinearLayout
android:id="@+id/imgLayout1"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:orientation="horizontal"
android:gravity="center">
<TextView
android:layout_width="130dp"
android:layout_height="40dp"
android:paddingLeft="120dp"
android:paddingRight="10dp" />
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:text="Random Crap1"
android:paddingLeft="10dp"
android:paddingRight="10dp"/>
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:text="Random Crap2"
android:paddingLeft="10dp"
android:paddingRight="10dp"/>
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:text="Random Crap3"
android:paddingLeft="10dp"
android:paddingRight="10dp"/>
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:text="Random Crap4"
android:paddingLeft="10dp"
android:paddingRight="10dp"/>
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:text="Random Crap5"
android:paddingLeft="10dp"
android:paddingRight="10dp"/>
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:text="Random Crap6"
android:paddingLeft="10dp"
android:paddingRight="10dp"/>
<TextView
android:layout_width="100dp"
android:layout_height="40dp"
android:text="Random Crap7"
android:paddingLeft="10dp"
android:paddingRight="10dp"/>
<TextView
android:layout_width="70dp"
android:layout_height="40dp"
android:paddingLeft="10dp"
android:paddingRight="70dp"/>
</LinearLayout>
</HorizontalScrollView>
答案 0 :(得分:0)
关注:
要将Horizontal ScrollView滚动到特定金额,请使用以下代码:
final HorizontalScrollView YourHorizontalScrollView = (HorizontalScrollView) findViewById(R.id.YourHorizontalScrollView);
YourHorizontalScrollView.post(new Runnable() {
@Override
public void run() {
final TextView YourTextView = (TextView) findViewById(R.id.yourTextView);
int scrollTo = 0;
final int count = ((LinearLayout) YourHorizontalScrollView.getChildAt(0))
.getChildCount();
for (int i = 0; i < count; i++) {
final View child = ((LinearLayout) YourHorizontalScrollView.getChildAt(0))
.getChildAt(i);
if (child != yourTextView) {
scrollTo += child.getWidth();
} else {
break;
}
}
YourHorizontalScrollView.scrollTo(scrollTo, 0);
}
});
希望这会对你有所帮助。
答案 1 :(得分:0)
你应该使用ViewPager而不是水平滚动,每次都适用于固定滚动。 修复ViewPager的高度以获得更好的体验。 使用ViewPager的自定义适配器
public class CustomViewPagerImageAdapterPC extends PagerAdapter {
@Override
public float getPageWidth(int position) {
// TODO Auto-generated method stub
//return super.getPageWidth(position);
return 0.4f;
}