Я знаю, что мой onTouchListener работает, потому что rangeL.setX (rawX-width/20) динамически перемещает мой просмотр, но я не получаю ничего, пытаясь установить ширину, используя paramsRange.width внутри слушателя, как показано в коде. Первый вызов paramsRange.width работает. Есть идеи?Настройка ширины внутри onTouchListener
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;
}
rangeL является дочерним элементом реалистичного макета, поэтому я попытался добавить следующий код перед «return false»; RelativeLayout relativeLayout = (RelativeLayout) findViewById (R.id.relativeLayout); relativeLayout.invalidate(); - это все тот же результат. – user2032323
Наконец-то я получил результат, в котором мне нужно было использовать requestLayout() вместо invalidate() в той же позиции. Благодарю. – user2032323