简体   繁体   English

在onTouchListener内部设置宽度

[英]Setting width inside onTouchListener

I know my onTouchListener is working because rangeL.setX(rawX-width/20) dynamically moves my view, but I'm not getting anything when trying to set width using paramsRange.width inside the listener as shown in the code. 我知道我的onTouchListener可以正常工作,因为rangeL.setX(rawX-width / 20)动态地移动了视图,但是当尝试使用侦听器内部的paramsRange.width设置宽度时,如代码所示,我什么也没得到。 The first call to paramsRange.width works though. 但是,对paramsRange.width的第一次调用有效。 Any ideas? 有任何想法吗?

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;
        }

尝试invalidate() OnTouchListener的rangeL的父视图结尾invalidate()

Use following code to find your view height and width, and put it on onResume method. 使用以下代码查找视图的高度和宽度,并将其放在onResume方法上。 Well, if it don't work, tried put it on onStart method. 好吧,如果它不起作用,请尝试将其放在onStart方法上。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM