2012-02-24 2 views
0

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

<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

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

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

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

+0

Одной из возможных причин является то, что изображение для «информации о месте» отсутствует в папке drawable-hdpi, и поэтому изображение с возможностью рисования или рисования-mdpi масштабируется (или наоборот) – tonys

ответ

0

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^