ヘッダー(画面の上部)とタブ(画面の下部)の間にスクロール表示があります。私は、ScrollViewの内部にあるImageViewが完全に表示されているか、電話画面のウィンドウに表示されていないかどうかを知りたいと思っています。スクロール内の表示が完全に表示されるかどうかを確認する方法
7
A
答えて
3
私は、次のよう(なアプローチがthis questionのものと類似している)を行うことをお勧めします。
など。あなたは(私は彼らが見逃しているように、ヘッダーとタブが何であるかわからないんだけど)次のXMLを持っている:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/scroller">
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:id="@+id/image"
android:src="@drawable/image001"
android:scaleType="fitXY" />
</ScrollView>
は、その後の活動は、次のようになります次:
小さな画像の場合public class MyActivity extends Activity {
private static final String TAG = "MyActivity";
private ScrollView mScroll = null;
private ImageView mImage = null;
private ViewTreeObserver.OnGlobalLayoutListener mLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
final Rect imageRect = new Rect(0, 0, mImage.getWidth(), mImage.getHeight());
final Rect imageVisibleRect = new Rect(imageRect);
mScroll.getChildVisibleRect(mImage, imageVisibleRect, null);
if (imageVisibleRect.height() < imageRect.height() ||
imageVisibleRect.width() < imageRect.width()) {
Log.w(TAG, "image is not fully visible");
} else {
Log.w(TAG, "image is fully visible");
}
mScroll.getViewTreeObserver().removeOnGlobalLayoutListener(mLayoutListener);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Show the layout with the test view
setContentView(R.layout.main);
mScroll = (ScrollView) findViewById(R.id.scroller);
mImage = (ImageView) findViewById(R.id.image);
mScroll.getViewTreeObserver().addOnGlobalLayoutListener(mLayoutListener);
}
}
それログに記録されます:イメージは完全に表示されます。
しかし、あなたは大きな画像を持っていますがスケーリングしている場合(例えばandroid:layout_width="wrap_content"
に設定しています)、実際にはImageView
の高さになりますイメージの完全な高さ(およびScrollView
もスクロールされます)ですので、adjustViewBoundsが必要な場合があります。その行動の理由は、FrameLayout
doesn't care about layout_width and layout_height of childsです。
関連する問題
- 1. ListViewの最後の行が完全に表示されているかどうかを確認する方法?
- 2. NSWindowが表示されているかどうかを確認する方法
- 3. オーバーフロースクロールで要素が完全に表示されているかどうかを確認するDIV
- 4. VBAでワークシートのセルが表示/表示されているかどうかを確認する方法
- 5. div内に要素が表示されているかどうかを確認
- 6. どのタブページ(TabControl)が表示されているかを確認する方法
- 7. スプライトオブジェクトが表示されているかどうかを確認するには?
- 8. divの全体が表示可能かどうかを確認する
- 9. アイテムがデータベース列に複数回表示されるかどうかを確認
- 10. NSWindowがMac OS X Lionで全画面表示されているかどうかを確認するには?
- 11. コンボボックスのドロップダウンリストが表示されているかどうかを確認する方法はありますか?
- 12. 内容が完全に表示されるようにTextBlockのサイズを制御する方法
- 13. GameKit UIが表示されるときの確認方法
- 14. システムキャレットが表示されているかどうかを確認する方法はありますか?
- 15. UIViewControllerが表示されているかどうかを確認する良い方法はありますか?
- 16. Twitter-bootstrap:ポップオーバーが既に表示されているかどうかを確認する方法は?
- 17. Swiftアプリケーションでユーザーに表示されたときにUIViewControllerが表示されたかどうかを確認する方法はありますか?
- 18. iframe内の要素が画面に表示されているかどうかを確認する
- 19. usercontrolが完全に表示された後にメソッドを実行する方法
- 20. Twitterのブートストラップポップオーバーが表示されているかどうかを確認する方法は?
- 21. 特定のDOM要素が表示されているかどうかを確認する方法
- 22. 瞬間でも表示が表示されているかどうかを確認
- 23. Microsoft Active Accessibilityを使用してコントロールが表示されているかどうかを確認する方法
- 24. "'}' near '='"そうでなければ完全に表示される行にエラーが表示されます
- 25. フォームがShowDialogで表示されたかどうかを確認する方法はありますか?
- 26. データベースからのデータ値が完全に表示されない
- 27. javascript&cssで完全に表示されない行を非表示にする
- 28. バックグラウンドイメージが完全に表示される問題がある
- 29. SMSまたは連絡先が表示されているかどうかを確認する方法?
- 30. Zeptoで要素が表示されているかどうかを確認する方法
試す:http://stackoverflow.com/a/25528434/3148266 – akshay7692