Измените размер AlertDialog, чтобы он точно соответствовал изображению

У меня есть следующий AlertDialog с изображением внутри него:

альтернативный текст

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

Мой макет xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/alert_thumb_root"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" >

  <ImageView android:id="@+id/thumb"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" />
</LinearLayout>

person mlevit    schedule 24.09.2010    source источник
comment
Он работает, но, как вы сказали, он изменяет размер изображения. Я не могу понять, почему Android просто не делает его того же размера, что и изображение ... в чем причина его увеличения?   -  person mlevit    schedule 25.09.2010
comment
Я сталкиваюсь с той же проблемой. Возможно, вы нашли ответ?   -  person MaiOM    schedule 18.06.2014


Ответы (3)


Если вы не создадите весь диалог самостоятельно, очень трудно контролировать такие вещи. Однако, если вы не возражаете против изменения размера изображения, вы можете попробовать что-то вроде:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/alert_thumb_root"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" >

  <ImageView android:id="@+id/thumb"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:scaleType="fitXY"/>
</LinearLayout>
person Cristian    schedule 24.09.2010
comment
+1 Спасибо! Помог мне с аналогичной проблемой, что android:scaleType=fitXY работал в сочетании с wrap_content при рендеринге растрового изображения в пользовательский диалог. - person AgentKnopf; 21.02.2012

См. этот вопрос и его ответ о том, как создать диалоговое окно без какого-либо пользовательского интерфейса, а точнее, где все видимое было помещено вами.

Этот вопрос/ответ, по-видимому, делает то же самое вещь, и кажется проще. Хотя не пробовал.

person benvd    schedule 24.09.2010

Лучший и простой способ добиться этого программно - это

setAdjustViewBounds(true);

Я отвечаю на это сейчас, потому что я потратил много дней на решение и нигде не могу найти ответ.

person varish ali    schedule 10.05.2019