我有一个只占用屏幕一部分的imageview。我在imageview上面有一个textview。当用户触摸文本视图时,他们可以将其拖动到屏幕上他们想要的位置。但是,我想限制用户只能在imageview上移动textview。
当文本视图移动到屏幕的顶部或右侧时,它会自动阻止它进一步移动(类似于将计算机鼠标移动到屏幕的顶部或左侧)。我想尝试在imageview的范围内模仿这种效果。
我尝试了很多技巧,例如获取imageview的大小并将其与y和x值进行比较,如果textview将超过这一点,它将等于这一点。但是到目前为止还没有成功。
这是我当前的代码(在OnTouchListener()中):
if (touchY >= imageHeight){
params.leftMargin = leftSideText;//sets the margin so the textview is displayed on the screen according to them because its aligned to top and left
params.topMargin = (tvOne.getHeight()) - imageHeight;
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
tvOne.setLayoutParams(params);
}
其中一些变量是:
touchX = (int) eventTwo.getRawX();
touchY = (int) eventTwo.getRawY();
//helps make the edit text start where the user touches the screen rather than that just being the top corner
int editTextWidth = tvOne.getWidth() / 2;
int editTextHeight = tvOne.getHeight() / 2;
topText = touchY - editTextHeight;
leftSideText = touchX - editTextWidth;
这段代码只是让文本视图在经过这一点后消失。
那么,为了清楚我在问什么,你如何将textview边界限制在imageview的范围内?如果您能提供任何帮助或建议,我们将不胜感激,谢谢!
编辑:我找到了问题的原因,但是,我还没有找到解决方案。首先,看起来textview并没有消失,它只是在图像下面的黑色背景上看不到。其次,textview超越imageview的原因是因为没有显示完整的图像,或者看起来如此。因此,当我得到高度指的是整个图像高度时,整个图像都没有显示出来。
看看我的问题here