我知道我的onTouchListener正在运行,因为rangeL.setX(rawX-width / 20)动态地移动了我的视图,但是当我尝试使用paramsRange.width在侦听器中设置宽度时,我没有得到任何东西,如代码所示。第一次调用paramsRange.width可以正常工作。有什么想法吗?
final LayoutParams paramsRange = rangeView.getLayoutParams();
paramsRange.height = height;
paramsRange.width = rangeWidth;
rangeView.setX(width/10);
rangeL.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int rawX;
final int actionIndex = event.getAction() >> MotionEvent.ACTION_MOVE;
final int location[] = { 0, 0 };
v.getLocationOnScreen(location);
rawX = (int) event.getX(actionIndex) + location[0];
rangeL.setX(rawX-width/20);
rangeView.setX(width/10+(rawX-width/20));
paramsRange.width = rangeWidth-(rawX-width/20);
return false;
}
答案 0 :(得分:1)
尝试invalidate()
rangeL的OnTouchListener的父视图结束。
答案 1 :(得分:0)
使用以下代码查找视图高度和宽度,并将其放在onResume方法上。好吧,如果它不起作用,试着把它放在onStart方法上。
rangeView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
rangeView.getMeasuredWidth();
rangeView.getMeasuredHeight();