Как сделать XML-макеты Android (особенно RelativeLayouts) простым способом, не восстанавливая все относительные отношения? - PullRequest
2 голосов
/ 30 декабря 2011

Я использую RelativeLayout больше, чем любые другие типы макетов в файлах Android XML. Учитывая, что в моих приложениях используются в основном простые и базовые интерфейсы, довольно легко создать новый RelativeLayout.

В настоящее время я создаю RelativeLayout и назначаю каждому компоненту свойств макета, таких как Layout Below или Layout Left, или Layout Right, чтобы привязать этот компонент к правильной области интерфейса пользователя.

Несмотря на то, что легко определить новые макеты, это адская попытка переместить один компонент внутри макета. Учитывая, что я использовал компоненты в своем макете для размещения других компонентов, после перемещения компонента макет вокруг этого компонента распадается. Перемещение компонента означает, что я должен заново сделать отношения для всех компонентов ниже этого. Конечно, я делаю это неправильно? Должен быть лучший способ?

TL; DR Я использую RelativeLayouts и компоненты, которые я поместил в пользовательский интерфейс, чтобы разместить друг относительно друга (конечно). Если я перемещу компонент скажем в верхнюю часть, элементы под ним прерываются, когда разрывается относительная связь. Как мне легче перемещать компоненты и экспериментировать с моим пользовательским интерфейсом, не переименовывая каждый раз десятки пространственных отношений?!

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Это один из случаев, когда использование инструментов предпочтительнее, чем ручное кодирование XML-макета.Редактирование XML с помощью вкладки Graphical Layout помогает избавиться от этой проблемы рефакторинга RelativeLayout s.Это не идеальное решение, но оно делает вещи намного проще.

Я должен отметить, что эти изменения произошли в ADT 14 и новее.Если вы используете какой-либо старый ADT, я предлагаю вам обновить.Если вы не знаете, как использовать графический редактор, чтобы получить максимальную отдачу от ваших RelativeLayout s, посмотрите это видео .

Сказав это, негибкость RelativeLayout является основной причиной, по которой я предпочитаю использовать вложенные LinearLayout с первыми - несмотря на предложения Google использовать первое по соображениям производительности.

В качестве компромисса я использую RelativeLayout только для элементов в ListView и вложенных LinearLayout для всего остального.

1 голос
/ 30 декабря 2011

+ 1 за вопрос, так как я сам искал решение.Тем не менее, я думаю / чувствую, что единственный способ сделать это - объявить такие атрибуты, как android:layout_alignParentBottom, android:layout_alignParentLeft и т. Д. Для элементов, которые может позволить использовать эти атрибуты, поскольку они совпадают с родителем,который, по моему пониманию, сам макет.Иначе я не вижу другого пути с Relative Layouts.Как говорит Рафаэль Т, другой способ привязки этих элементов к макету - использование nested Linear Layouts.Но опять же, даже это немного утомительно.Наконец, это зависит от программиста, который выбирает макет.Лично я бы выбрал / предпочел Relative Layouts.

...