Подтвердить что ты не робот

Возможно ли в android определить константы в XML, которые различаются в зависимости от конфигурации

Мне интересно иметь XML-макеты в формате Android для изменения размера в зависимости от пейзажного или портретного просмотра (и, возможно, других конфигураций позже).

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:background="@drawable/stream_bg_1px_wide"
android:layout_height="150dip" >

В этом примере я просто хочу изменить размер 150dip в зависимости от пейзажа или портрета, а не изменять ничего.

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

Итак, я задавался вопросом, можно ли определить значение (константу) в файле XML и ссылаться на него из моего макета, аналогично тому, как можно определить цвета

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="shopper_background"> #FFFFFF</color>
</resources>

вдоль линий......

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <value name="footer_size" >150</value>
</resources>

Затем я мог бы просто реплицировать этот файл с разными значениями в каждой конфигурации.

спасибо за любую помощь

4b9b3361

Ответ 1

Да. Измерение является принятым элементом в файле ресурсов. Так создайте, например. res/values ​​/dimension.xml и поместите

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

Ответ 2

Да, вы можете это сделать, мы делаем это повсюду в самом Android:) Просто определите свои константы в res/values ​​/, res/values-land/и т.д. Для измерений используйте тег и обратитесь к ним, используя @dimen/my_value в макете.