在onTouchListener中设置宽度

时间:2013-09-16 06:22:19

标签: java android parameters width ontouchlistener

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

2 个答案:

答案 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();