Java 设置onTouchListener内部的宽度
我知道我的onTouchListener正在工作,因为rangeL.setX(rawX width/20)动态地移动了我的视图,但是当我试图在listener中使用paramsRange.width设置宽度时,没有得到任何结果,如代码所示。但是,对paramsRange.width的第一次调用仍然有效。有什么想法吗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
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()得到了所需的结果。谢谢