2011-12-20 3 views
2

У меня есть кнопка изображения с фоновым изображением .png круга. Я тестирую его на разных экранах разрешения, и он выглядит по-разному на каждом. Большинство из них искажают форму круга, растягивая ее на один размер.Поддерживает соотношение изображения круга для кнопки при различных разрешениях экрана

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

Спасибо за любые предложения.

фрагмент из main.xml ...

<LinearLayout 
    android:id="@+id/buttonArea" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:orientation="vertical" 
    android:padding="30dp"> 

    <ImageButton 
     android:id="@+id/button1" 
     android:background="@drawable/button_inactive" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_gravity="center"/> 

</LinearLayout> 

Edit: удаления layout_weight атрибут из ImageButton фиксированных в большинстве случаев, но не все. Кажется, что прокладка все еще меняет отношение круга. Типы шкалы не имеют эффекта. Это потому, что мой образ задан как фон, а не src?

+0

Было ли это layout_weight или вы пошли на scaleType? Просто так я могу редактировать ответ для других пользователей ... – Entreco

+0

Я закончил работу с обоими, но layout_weight был ключевым. – JT703

+0

@Entreco - еще одна вещь, которая происходит - когда я увеличиваю заполнение на контейнере, она снова искажает соотношение. все различные scaleTypes. Редактор WYSIWYG не собирается показывать его правильно? или есть ли еще больше этого? – JT703

ответ

3

Я думаю, что причиной этого является андроид: layout_weight = "1" в вашем ImageButton. Это сделает ваш ImageButton тем же размером вашего экрана, независимо от размера экрана.

Попробуйте удалить этот атрибут. Если это не исправить вашу проблему, есть взгляд на android:scaleType атрибут

<ImageButton 
    android:id="@+id/button1" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:layout_gravity="center" 
    android:background="@null" 
    android:src="@drawable/button_inactive" 
    android:scaleType="centerInside"/> 
+0

К сожалению, мне пришлось отменить эту галочку. Изображение все еще искажается. Макет-вес фиксировал большую часть случаев, но не отступы в родительском контейнере не испортил его. Тип шкалы, похоже, не влияет на это. Может быть, потому, что мой образ задан как фон, а не src? – JT703

+1

Я изменил ответ. Если вы установите для фона значение @null и src на ваш drawable, вы можете соответствующим образом использовать атрибут scaleType = "centerInside" – Entreco

2

Вы можете установить атрибут вашего ImageView scaleType, чтобы one that keeps the aspect ratio вашего изображения. Все они ведут себя немного иначе, поэтому вам придется использовать тот, который подходит вашим потребностям (CenterInside - хороший, чтобы начать).

Если это не работает, вы всегда можете определить набор Heigh/ширин вашего изображения (например, layout_width = "128dp).

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