android中带数字的水平滚动视图
当我将200 x文本视图与值放在一起时,我有scrollview 我有三个问题: 1.滚动停止在不同的位置。我需要停止它的价值中心滚动。 2.只有停止滚动,我才能从滚动中获取值。我想在中心值改变时得到它。 3.我有一个值为0-100的滚动条,中间的值是4。我想要0。和左边的空白区域 请帮帮我 代码:android中带数字的水平滚动视图,android,scrollview,Android,Scrollview,当我将200 x文本视图与值放在一起时,我有scrollview 我有三个问题: 1.滚动停止在不同的位置。我需要停止它的价值中心滚动。 2.只有停止滚动,我才能从滚动中获取值。我想在中心值改变时得到它。 3.我有一个值为0-100的滚动条,中间的值是4。我想要0。和左边的空白区域 请帮帮我 代码: 把你的类文件和xml也放进去。我添加我的代码。在xml中,我有标准的水平滚动视图 for(int i = 0 ;i<221;i++) { valueTV
把你的类文件和xml也放进去。我添加我的代码。在xml中,我有标准的水平滚动视图
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);
}
}