КонтекстРазмер в AlertDialog с ImageView слишком большой
Я хотел бы иметь AlertDialog с размером изображения квадрата. Мои изображения имеют размер 800x800 пикселей, что больше экрана устройства (800x480). Изображение автоматически масштабируется до размера AlertDialog. Однако сам диалог становится слишком большим: это полная высота приложения.
Проблема
Я хотел бы иметь диалог только занимают пространство изображения (плюс кнопки диалога). Почему этого не происходит? Я думал, что Dialogs стандартно установлен на WRAP_CONTENT.
Код:
ImageView photo = new ImageView(getApplicationContext());
photo.setImageResource(R.drawable.imageof800x800pixels)
AlertDialog.Builder builder =
new AlertDialog.Builder(HangboardActivity.this).
//setMessage(R.string.nextgrip). // this is quite ugly
setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).
setView(photo);
final AlertDialog alert = builder.create();
alert.show();
Edited Код:
ImageView photo = findPhotoForExercise();
int widthPX = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics());
int heightPX = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics());
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(widthPX, heightPX);
photo.setLayoutParams(layoutParams);
AlertDialog.Builder builder =
new AlertDialog.Builder(HangboardActivity.this).
setMessage(R.string.nextgrip). // this is quite ugly
setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).
setView(photo);
final AlertDialog alert = builder.create();
alert.show();
строну уменьшения изображения. Это вариант? –
Это работает (я уже тестировал это), но это не отличное решение, поскольку на экранах с большим количеством пикселей (например, планшеты) вы хотели бы иметь более высокое разрешение изображения (поскольку диалог может быть больше). – Peter
... Который вы также можете решить путем программного поиска ширины устройства. Я надеялся, что это будет возможно решить более элегантно. Я думаю, что эта проблема может быть связана с тем, что Dialog создается сначала с учетом полного размера изображения, и изображение затем масштабируется, чтобы вписаться в диалог, но сам размер диалога не обновляется ... – Peter