Как создать макет, где я могу разместить все, что я хочу? - PullRequest
0 голосов
/ 10 февраля 2012

Я разрабатываю приложение с множеством изображений, кнопок и текстовых представлений, разбросанных по экрану.На данный момент я использую относительный макет, так как он показался мне наиболее гибким.Однако, где бы я ни разместил свои элементы, их размер по-прежнему ограничен выравниванием с другими элементами.Еще хуже, если элемент изменяет размер, любые элементы, выровненные по нему, также изменяют размер.

Для этого должно быть простое решение!Nib-файлы Apple выполняют это легко, легко перетаскивая их в любое место;все же андроид, кажется, застрял с ограничительным расположением таблиц / линейных / относительных / сеток.

Если возможно, решение может быть выполнено через затмениеЕсли нет, то, пожалуйста, направьте меня к соответствующей документации, чтобы научиться создавать свои собственные макеты с помощью xml, создавать огромный макет сетки или что-то еще, что меня ждет в ужасе :)

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

Я думаю, что вы хотите что-то вроде абсолютного макета, хотя они были объявлены устаревшими некоторое время назад, я уверен, что вы все еще можете сделать это с помощью относительного макета, вам не обязательно выравнивать переход через другое представление, я думаю, вы могли бы просто сделать что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="70dp"
        android:layout_marginTop="82dp"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="172dp"
        android:layout_marginRight="84dp"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

все, что я здесь делаю, это выравнивание со стороной родителя и наличие поля между ними

0 голосов
/ 10 февраля 2012

Взгляните на Пользовательский макет Android и Android - Как нарисовать букву в определенной точке?

Планируете ли вы использовать приложение только на одной модели устройства Android? Если да, проверьте Альтернативы AbsoluteLayout . (FrameLayout или RelativeLayout)

Не стоит ставить «Все, что угодно», так как устройства Android имеют много разных размеров экрана и свойств. Единственным вариантом будет определить свой собственный макет.

Мне действительно очень нравится, как Android пытается совместить макет с максимально возможным количеством устройств, используя выравнивание и структурированные представления макетов.

Причина, по которой Apple очень проста, заключается в том, что вы ориентируетесь только на iPhone, у которого фиксированные свойства экрана на всех устройствах.

Надеюсь, это поможет. Удачи.

0 голосов
/ 10 февраля 2012

Вы можете делать то, что просите, с помощью Frame Layout и установки положения каждого объекта.Но делайте это на свой страх и риск.Причина, по которой файлы Apple nib позволяют произвольно размещать объекты, заключается в том, что соотношение сторон всех их устройств одинаково.Таким образом, ваши макеты просто увеличиваются и уменьшаются равномерно.

Android - это более разнообразная экосистема, и вам следует попытаться охватить макеты, которые адаптируются к различным размерам экрана и ориентациям.

...