Сохраняйте соотношение изображения круга для кнопки на разных разрешениях экрана - PullRequest
2 голосов
/ 21 декабря 2011

У меня есть кнопка изображения с фоновым изображением .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>

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

Ответы [ 2 ]

3 голосов
/ 21 декабря 2011

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

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

<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"/>
2 голосов
/ 21 декабря 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...