1

画面の一部のみを占めるイメージビューがあります。そして、イメージビューの上にテキストビューがあります。ユーザーがテキストビューに触れると、画面上の好きな場所にドラッグできます。ただし、ユーザーがイメージビューでテキストビューのみを移動できるように制限したいと考えています。

textview が画面の上部または右側に移動すると、それ以上進むことが自動的にブロックされます (コンピューターのマウスを画面の上部または左側に移動した場合と同様)。イメージビューの範囲内でこの効果を模倣したいと考えています。

イメージビューのサイズを取得してyおよびx値と比較するなど、さまざまな手法を試しました。テキストビューがこのポイントを超えると、このポイントに等しくなります。しかし、これまでのところ成功していません。

これは私の現在のコードです(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;

このコードは、この時点を過ぎるとテキストビューを非表示にします。

それで、私が求めていることを明確にするために、テキストビューの境界をイメージビューの範囲に制限するにはどうすればよいですか? ヘルプや提案を提供していただければ幸いです。ありがとうございます。

編集:私は自分の問題の理由を見つけましたが、解決策は見つかりませんでした。まず、画像の下の黒い背景に表示されていないだけで、テキストビューが消えていないようです。第二に、テキストビューがイメージビューを通過する理由は、完全な画像が表示されていないか、そう思われるためです。そのため、画像全体の高さを参照する高さを取得すると、画像全体が表示されません。

ここで私の質問を見てください

4

0 に答える 0