0

rangeL.setX(rawX-width/20) がビューを動的に移動するため、onTouchListener が機能していることはわかっていますが、コードに示すようにリスナー内で 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

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 に答える