Android: странная проблема с масштабированием при нажатии кнопки topDrawable - PullRequest
0 голосов
/ 24 февраля 2012

В моем приложении я создаю панель кнопок как часть моего пользовательского интерфейса со следующим XML (обратите внимание, что это не весь макет, а только часть панели кнопок):

<LinearLayout android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_centerHorizontal="true"
    android:paddingTop="10dp">

    <Button android:id="@+id/btnTopObjects"
        android:layout_width="70dp"
        android:layout_height="55dp"
        android:drawableTop="@drawable/media_guide_object"
        android:text="@string/media_screen_top_objects"
        android:background="@drawable/media_guide_button"
        android:textSize="9dp"/>

    <Button android:id="@+id/btnTrails"
        android:layout_width="70dp"
        android:layout_height="55dp"
        android:drawableTop="@drawable/media_guide_trail"
        android:text="@string/media_screen_trails"
        android:background="@drawable/media_guide_button"
        android:layout_marginLeft="5dp"
        android:textSize="9dp" />

    <Button android:id="@+id/btnEvents"
        android:layout_width="70dp"
        android:layout_height="55dp"
        android:drawableTop="@drawable/media_guide_event"
        android:text="@string/media_screen_events"
        android:background="@drawable/media_guide_button"
        android:layout_marginLeft="5dp"
        android:textSize="9dp" />

    <Button android:id="@+id/btnVenueInfo"
        android:layout_width="70dp"
        android:layout_height="55dp"
        android:drawableTop="@drawable/media_guide_venue"
        android:text="@string/media_screen_venue_info"
        android:background="@drawable/media_guide_button"
        android:layout_marginLeft="5dp"
        android:textSize="9dp" />
</LinearLayout>

Это дает достаточно корректные результаты при тестировании на экране 320x480. Панель кнопок выглядит следующим образом, чего я и хочу:

enter image description here

Однако на устройстве с разрешением экрана 480x800 та же панель кнопок выглядит следующим образом:

enter image description here

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

Все 4 изображения создаются одинаково в одной графической программе. Все они 31x31 пикселей 72dpi. У меня нет проблем, если все они уменьшаются в соответствии с плотностью пикселей устройства, но я хочу, чтобы 4 изображения были одинакового размера! Как мне этого добиться?

Заранее большое спасибо за любую помощь.

1 Ответ

0 голосов
/ 24 февраля 2012

Хорошо, я отследил проблему до следующего:

Как только представление создается из XML, затем в коде при некоторых условиях я загружаю изображение в растровое изображение и выполняю некоторые операции над ним перед установкойэто растровое изображение как BitmapDrawable в кнопку с использованием метода setCompoundDrawable.

При первой загрузке XML и установке в представление все четыре изображения отображаются как последняя кнопка (большое изображение).Когда я загружаю растровое изображение, выполняю какое-то преобразование для него и устанавливаю его в качестве нарисованного для кнопки - тогда оно уменьшается в зависимости от плотности экрана устройства.Так получилось, что первые три кнопки настроили рисование, а последней не нужно было.

Я исправил код, чтобы всегда загружать растровые изображения, а затем установил рисованные элементы на кнопки - для всех кнопок,независимо от того, должны ли они быть скорректированы или нет.Таким образом, все четыре кнопки не отображаются с изображениями одинакового размера (масштабируются в зависимости от плотности экрана - но все одинакового размера).

...