当我将 200 x TextView 与值放在一起时,我有滚动视图。
我有三个问题: 1. 滚动停止在不同的位置。我需要在中心滚动上停止它的价值。2. 只有停止滚动,我才能从滚动中获得价值。我想在中心值发生变化时得到它。3. 我的滚动值为 0 - 100,中心值为 4。我想要 0。左边有空白字段。
请帮我。
代码:
for(int i = 0 ;i<221;i++)
{
valueTV = new TextView(getActivity().getApplicationContext());
valueTV.setText(Integer.toString(i));
valueTV.setWidth(50);
valueTV.setHeight(30);
valueTV.setGravity(Gravity.CENTER_HORIZONTAL);
valueTV.setTextColor(Color.BLACK);
valueTV.setTag(i-1);
line.addView(valueTV);
}
final int chilrenNum = line.getChildCount();
scroll = (MyScrollView) rootView.findViewById(R.id.horizontalScrollView1);
scroll.setOnScrollStoppedListener(new OnScrollStoppedListener() {
@Override
public void onScrollStopped() {
int center = scroll.getScrollX() + scroll.getWidth() / 2;
for (int i = 0; i < chilrenNum; i++) {
View v = line.getChildAt(i);
int viewLeft = v.getLeft();
int viewWidth = v.getWidth();
if (center >= viewLeft && center <= viewLeft + viewWidth)
{
int center_at=(viewLeft+5 + viewWidth / 2) - center;
scroll.scrollBy(center_at, 0);
height.setText(v.getTag().toString());
break;
}
}
}
});
和滚动
public class MyScrollView extends HorizontalScrollView{
private Runnable scrollerTask;
private int initialPosition;
private int newCheck = 100;
public interface OnScrollStoppedListener{
void onScrollStopped();
}
private OnScrollStoppedListener onScrollStoppedListener;
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
scrollerTask = new Runnable() {
public void run() {
int newPosition = getScrollX();
if(initialPosition - newPosition == 0){//has stopped
if(onScrollStoppedListener!=null){
onScrollStoppedListener.onScrollStopped();
}
}else{
initialPosition = getScrollX();
MyScrollView.this.postDelayed(scrollerTask, newCheck);
}
}
};
}
public void setOnScrollStoppedListener(OnScrollStoppedListener listener){
onScrollStoppedListener = listener;
}
public void startScrollerTask(){
initialPosition = getScrollX();
MyScrollView.this.postDelayed(scrollerTask, newCheck);
}
}