Java 设置onTouchListener内部的宽度

Java 设置onTouchListener内部的宽度,java,android,parameters,width,ontouchlistener,Java,Android,Parameters,Width,Ontouchlistener,我知道我的onTouchListener正在工作,因为rangeL.setX(rawX width/20)动态地移动了我的视图,但是当我试图在listener中使用paramsRange.width设置宽度时,没有得到任何结果,如代码所示。但是,对paramsRange.width的第一次调用仍然有效。有什么想法吗 final LayoutParams paramsRange = rangeView.getLayoutParams(); paramsRange.height = heig

我知道我的onTouchListener正在工作,因为rangeL.setX(rawX width/20)动态地移动了我的视图,但是当我试图在listener中使用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;
        }

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

rangeView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
rangeView.getMeasuredWidth();
rangeView.getMeasuredHeight();

尝试
invalidate()
rangeL的父视图结束于OnTouchListener。

rangeL是realtive布局的子视图,因此我尝试在“return false;”RelativeLayout RelativeLayout=(RelativeLayout)findViewById(R.id.RelativeLayout)之前添加以下代码;relativeLayout.invalidate();-这仍然是相同的结果。我最终在相同的位置使用requestLayout()而不是invalidate()得到了所需的结果。谢谢