Существует прокрутка между заголовком (вверху экрана) и вкладками (снизу экрана). Я хочу знать, полностью ли виден ImageView, который находится внутри ScrollView, или нет в окне экрана телефона.Как узнать, доступен ли просмотр внутри прокрутки полностью или нет
ответ
Я хотел бы предложить, чтобы сделать следующим образом (подход похож на один в this question).
E.g. У вас есть следующий 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. Как узнать, доступен ли конкретный пользователь Twitter или нет?
- 2. Как узнать, доступен ли адрес в ядре Linux или нет?
- 3. Как узнать, доступен ли конкретный класс JVM или нет?
- 4. Как узнать, полностью ли зарегистрирован пользователь или нет?
- 5. Как найти, доступен ли контент или нет внутри div?
- 6. Как узнать, активен ли просмотр списка или нет?
- 7. Сессия Доступен или нет
- 8. Как узнать, доступен ли AUCTeX?
- 9. Как узнать, доступен ли фрагмент?
- 10. Как узнать, доступен ли fastcgi_finish_request()?
- 11. Как можно узнать, доступен ли MediaRecorder.AudioSource.VOICE_RECOGNITION
- 12. Как узнать, полностью загружена ли jQuery?
- 13. Как узнать, полностью ли CGImageRef?
- 14. Как узнать, действительно ли это мобильное устройство или нет
- 15. Как проверить, доступен ли IP-адрес или нет?
- 16. Как узнать, отмечен ли флажок или нет?
- 17. Как узнать, заблокирован ли NSDocument или нет?
- 18. Как узнать, жив ли клиент или нет
- 19. Как узнать, играет ли песня или нет?
- 20. Как узнать, успешна ли логина или нет?
- 21. Как узнать, завершено ли намерение или нет?
- 22. Как узнать, закрыт ли JDialog или нет?
- 23. Как узнать, работает ли служба или нет
- 24. Как узнать, обучена ли сеть или нет?
- 25. Как узнать, заблокирован ли QMutex или нет?
- 26. Как узнать, минимизировано ли окно или нет?
- 27. Как узнать, прочитано ли сообщение или нет
- 28. Как узнать, проверен ли пользователь Youtube или нет
- 29. Как настроить веб-просмотр внутри родительского прокрутки?
- 30. ActiveDirectory: как узнать, доступен ли домен?
Попробуйте следующее: http://stackoverflow.com/a/25528434/3148266 – akshay7692