Изменение размера изображения, чтобы заполнить ширину экрана
Я пытаюсь установить изображение, которое я загружаю из Интернета. Я использую библиотеку, чтобы помочь мне сделать это под названием ион. Проблема в том, что мне нужно изменить размер изображения, чтобы оно соответствовало моему экрану и сохраняло соотношение сторон. Высота, кажется, работает нормально, однако я хочу установить ширину растрового изображения, чтобы она соответствовала всей ширине устройства, сохраняя соотношение сторон. Но это не работает, и изображение обрезается с обеих сторон...
<ImageView
android:id="@+id/imageView"
android:layout_width="fill_parent"
android:layout_height="@dimen/_height" />
Код:
DisplayMetrics metrics = getResources().getDisplayMetrics();
mWidth = metrics.widthPixels;
mHieght = (int) getResources().getDimension(R.dimen._height);
Ion.with(imageView).resize(mWidth, mHieght).load(url)
Редактировать: это с android:scaleType="centerCrop"
3 ответа
ImageView
имеет функцию масштаба типа. Проверьте ImageView.ScaleType. Я думаю centerInside
или же fitCenter
это то, что вы ищете.
Обновить
Извини, я не понял, что у тебя фиксированная высота. centerCrop
должен быть ответ.
Я добился этого, используя "paddingLeft" и "paddingRight" на родительском макете; в то время как применяют отрицательное значение к отступам и полям для дочернего макета / ImageView. Флаг "android:clipToPadding" должен быть ложным, чтобы предотвратить отсечение.
<LinearLayout
...
android:paddingLeft="10sp"
android:paddingRight="10sp"
android:clipToPadding="false"
...>
<ImageView
android:layout_marginLeft="-10sp"
android:layout_marginRight="-10sp"
android:paddingRight="-10sp"
android:paddingLeft="-10sp"
...>
Если у вас есть известный максимальный размер для ваших изображений, вы можете установить ширину вашего макета, равную наибольшей ширине вашего набора изображений, а затем взять все по центру. Это сработало для меня:
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="1920px"
android:layout_height="fill_parent"
android:layout_gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:background="@drawable/your_image" />
</RelativeLayout>
</FrameLayout>
Где 1920px - самая большая ширина ваших изображений. Результат приемлемый, РЕДАКТИРОВАТЬ: Изображение идеально отцентрировано.