用户触摸时将TextView边界限制为ImageView

时间:2012-11-02 18:32:56

标签: java android android-layout textview ontouchlistener

我有一个只占用屏幕一部分的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

0 个答案:

没有答案