私はこれに少し行き詰まっています-何よりもまず、次のリンクは役に立ちましたが、可視性に関する少しの問題を思いつきました:
リンク:ビューの可視性を確認する
スクロール ビュー (親) といくつかのサブビュー ( LinearLayout
-> TableLayout
) などがありView.GONE
ます。XML ( android:visibility="gone"
) 内に設定する項目がいくつかあります。
表示されているかどうかを判断するための簡単なコードがありますがgetVisibility()
、アイテムをに設定しView.VISIBLE
てすぐgetDrawingRect()
に試してみると、全面的にゼロの Rect が得られます。さらにクリックすると、正しい座標が取得されます。
これは、(XML で定義されているように) ビューが一度も描画されていないために、座標が返されないことが原因である可能性がありますが、View.VISIBLE
画面の可視性を判断する前に設定します。onDraw() などから何らかのコールバックを取得する必要があるのでしょうか? または、コード内の非表示アイテムのビューの可視性を設定することもできます。ちょっと面倒です;(
いくつかのコード:
Rect scrollBounds = new Rect();
scroll.getHitRect(scrollBounds);
Rect viewBounds = new Rect();
if (view.getVisibility() == View.GONE) {
view.setVisibility(View.VISBLE)
viewBounds.getDrawingRect(viewBounds);
if (!Rect.intersects(scrollBounds, viewBounds) {
// do somthing
}
}
レイアウト領域は次のとおりです。
ScrollView
LinearLayout
TableLayout
Button
HiddenView
もちろん、これについて完全に間違った方法で行っている可能性が非常に高いです。基本的には、表示されたビュー全体が見えるように、スクロールビューが自分自身を配置するようにしたいだけです。
他の情報が必要な場合は、お知らせください。