Я помещаю очень широкое изображение в HorizontalScrollView.
Высота ImageView / ScrollView является динамической, поскольку я установил высоту 0dp и добавил ограничения.
Поскольку тип масштаба ImageView - fitStart, а AdjustViewBounds - это true - ширина изображения изменяется.
XML:
<HorizontalScrollView
android:id="@+id/mapScrollView"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginBottom="10dp"
app:layout_constraintBottom_toTopOf="@id/playButton"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.constraint.ConstraintLayout
android:id="@+id/mapLayout"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<ImageView
android:id="@+id/mapImage"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:adjustViewBounds="true"
android:scaleType="fitStart"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.gigi.testmap.activities.quest.QuestMapPathView
android:id="@+id/mapLinesView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="@id/mapImage"
app:layout_constraintEnd_toEndOf="@id/mapImage"
app:layout_constraintStart_toStartOf="@id/mapImage"
app:layout_constraintTop_toTopOf="@id/mapImage" />
</android.support.constraint.ConstraintLayout>
</HorizontalScrollView>
Я пытаюсь получить ширину ImageView (общая ширина, видимая и невидимая часть). Получение общей ширины ScrollView также поможет.
Моя цель - расположить кнопки сверху карты в положениях, рассчитанных в соответствии с шириной и высотой визуализированного ImageView.
Я загружаю изображение, используя Glide:
final ImageView mapImage = mActivity.findViewById(R.id.mapImage);
Glide.with(mActivity).load(R.drawable.fullmap).into(mapImage);
mapImage.getViewTreeObserver().addOnGlobalLayoutListener(new
ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mapImage.getWidth(); // --> returns 0
mapImage.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
}
});
Я попытался получить ширину, используя прослушиватель глобальной компоновки наблюдателя в виде дерева, но все, что я получил, это 0. Высота возвращается правильно, хотя .
Любая помощь будет высоко ценится,
Большое спасибо.