Специфичные для планшета значения ImageView ширины / высоты / и т. Д. С использованием XML? - PullRequest
2 голосов
/ 01 ноября 2011

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

У меня есть GridView с изображениями и текстом под каждым изображением.В настоящее время высота каждого изображения установлена ​​на 120dp, а не на wrap_content, так что оно масштабируется и корректно выравнивается по высоте, и все выглядит ровно.Изменение ориентации прекрасно работает, и GridView автоматически меняется с 2xN на 3xN.

Теперь, когда я хочу разместить его на планшете, GridView в конечном итоге становится 5xN и 7xN в зависимости от ориентации (на 10-дюймовом планшете).Однако, чтобы GridView выглядел лучше, я бы предпочел изменить высоту изображения на большее значение (скажем, 300 dp) и иметь меньше элементов большего размера. Как лучше всего это сделать?

Я не хочу извлекать только элемент и реплицировать все его значения, меняя только одно. В идеале я хотел бы просто иметь возможность поместить значение высоты в нечто вроде strings.xml и strings-xlarge.xml, изатем ссылаться на это из макета. Это возможно? Я действительно ненавижу дублирование кода / ресурсов.

Спасибо.

1 Ответ

6 голосов
/ 01 ноября 2011

То, что вы ищете, это размерный тег.Он работает аналогично строковому тегу, но для измерений.Вы можете иметь что-то вроде этого в values ​​/ dimensions.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="image_size">120dp</dimen>
</resources>

И в values-xlarge / dimensions.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="image_size">300dp</dimen>
</resources>

Ваш XML может ссылаться на размер с помощью @dimen/ image_size и обо всем позаботится за вас.Вы также можете программно получить к нему доступ с помощью getResources (). GetDimension (R.dimen.image_size) из Context.

Обратите внимание, что начиная с версии 3.2, вы можете использовать пиксельные требования (например, w720dp) в именах ресурсов вместо"ведра", как xlarge.Подробнее здесь .

...