画面の一部のみを占めるイメージビューがあります。そして、イメージビューの上にテキストビューがあります。ユーザーがテキストビューに触れると、画面上の好きな場所にドラッグできます。ただし、ユーザーがイメージビューでテキストビューのみを移動できるように制限したいと考えています。
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;
このコードは、この時点を過ぎるとテキストビューを非表示にします。
それで、私が求めていることを明確にするために、テキストビューの境界をイメージビューの範囲に制限するにはどうすればよいですか? ヘルプや提案を提供していただければ幸いです。ありがとうございます。
編集:私は自分の問題の理由を見つけましたが、解決策は見つかりませんでした。まず、画像の下の黒い背景に表示されていないだけで、テキストビューが消えていないようです。第二に、テキストビューがイメージビューを通過する理由は、完全な画像が表示されていないか、そう思われるためです。そのため、画像全体の高さを参照する高さを取得すると、画像全体が表示されません。
ここで私の質問を見てください