0

我知道我的 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;
        }
4

2 回答 2

1

尝试将invalidate()范围L 的父视图结束的OnTouchListener。

于 2013-09-16T08:31:28.763 回答
0

使用以下代码找到您的视图高度和宽度,并将其放在 onResume 方法中。好吧,如果它不起作用,请尝试将其放在 onStart 方法上。

rangeView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
rangeView.getMeasuredWidth();
rangeView.getMeasuredHeight();
于 2013-09-16T07:00:50.127 回答