Должны ли мы избегать определения размера внутри XML? - PullRequest
0 голосов
/ 15 ноября 2018

Есть ли причина избегать определения dp s непосредственно в файлах xml?
Например. есть ли основания предпочитать:

android:layout_marginLeft="@dimen/left_margin"  

за это:

android:layout_marginLeft=16dp  

Если я правильно понимаю, это будет иметь смысл только для планшетов, но в этом случае у нас не будет соответствующего xml в land с соответствующими значениями?
Кроме того, следует ли быть осторожным с добавлением чего-либо в dimen.xml? Например. left_margin должно быть определено во всех dimen.xml для всех измерений?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Одной из причин может быть то, что, возможно, у вас есть множество макетов, где marginLeft должно быть одинаковым.Вы можете установить их все на 16dp прямо в файлах макета, но что если вам нужно изменить это измерение?Если у вас есть 16dp, определенный в каждом макете, вам придется изменить каждый его экземпляр, и вы можете забыть о некоторых.Если он определен в dimens, вам нужно изменить его только один раз.

Другая причина - themers.Кто-то может сделать тему для вашего приложения.Намного проще переопределить извлеченные значения, чем переопределять и копировать весь макет, просто чтобы изменить одно значение.

И, как говорит Гейб, вам действительно следует использовать start и end вместо leftи right, когда это возможно.В противном случае ваше приложение будет выглядеть ужасно на устройствах, использующих RTL.

0 голосов
/ 15 ноября 2018

Есть веская причина для использования первого. Допустим, вы выбираете действительно большие устройства и хотите больший запас. В первом случае вам нужно только переопределить файл измерений и переопределить измерение 1. Во втором случае вы должны переопределить весь макет, что вызывает большие проблемы с обслуживанием.

(Также вы почти всегда должны использовать marginStart и marginEnd вместо left и right, чтобы вы правильно обрабатывали языки RTL).

...