создать пользовательский (большой) уведомление со следующей планировкой:ScaleType не cropCenter работает на пользовательском макете Notification - Android 4.x
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"/>
</LinearLayout>
и создать уведомление, как это:
private void showNotificationWithImage(Bitmap image) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.notification);
remoteViews.setImageViewBitmap(R.id.image, image);
Notification notification = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.n_icon)
.setCustomBigContentView(remoteViews)
.setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0))
.build();
notificationManager.notify(0, notification);
}
Отображаемое изображение: this one.
На Android 5.0 вверх, изображения правильно масштабированная (centerCrop
, ось у точно подходит) в пределах ImageView
:
На Android 4.1.x (SDK лвл 16), однако изображение не масштабируется правильно:
Разрешение в обоих примерах идентично.
Обратите внимание, что эта проблема возникает только на
ImageView
в настраиваемой уведомления (большой контент), неActivities
т.д.Использование
fitCenter
и т.д. это не вариант, потому что изображение должно охватывать всю ширину (ИЛИ высота)Я попытался установить высоту изображения в
wrap_content
, ту же проблему. Кажется, что он работает при установке высотыImageView
, поэтому он грубо соответствует формату изображения, но это не вариант, так как я хочу отображать изображения с различными пропорциями.
Кто-нибудь знает, как это исправить?
PS: Вы можете проверить мой тестовый проект here.
EDIT: Настройка высоты изображения к wrap_content
и добавление adjustViewBounds="true"
как предложено rom4ek результаты в следующем, как только уведомление хитов это максимум heigth: Link to Image
Если вы хотите сохранить соотношение сторон изображения, вы должны использовать ScaleType centerInside. или вы хотите поместить изображение, а затем FIT_XY. –
@Cetan centerCrop DOES поддерживает аспектный рацион (https://developer.android.com/reference/android/widget/ImageView.ScaleType.html) и должен соответствовать изображению, чтобы точно совпадала одна ось. – FWeigl
Да, но это Crop формирует все боковое изображение и показывает изображение из центра. –