Изменение размера изображения, чтобы заполнить ширину экрана

Я пытаюсь установить изображение, которое я загружаю из Интернета. Я использую библиотеку, чтобы помочь мне сделать это под названием ион. Проблема в том, что мне нужно изменить размер изображения, чтобы оно соответствовало моему экрану и сохраняло соотношение сторон. Высота, кажется, работает нормально, однако я хочу установить ширину растрового изображения, чтобы она соответствовала всей ширине устройства, сохраняя соотношение сторон. Но это не работает, и изображение обрезается с обеих сторон...

  <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 - самая большая ширина ваших изображений. Результат приемлемый, РЕДАКТИРОВАТЬ: Изображение идеально отцентрировано.

Другие вопросы по тегам