Положение подпредставлений в Android - PullRequest
1 голос
/ 23 ноября 2010

Я пытаюсь понять структуру представления Android, и я немного запутался в том, как позиционировать дочерние представления

Допустим, у меня есть FrameLayout, который будет содержать мой пользовательский вид. Мой пользовательский вид рисует только прямоугольник 50x50 пикселей.

Итак, я установил свой View.setMeasureDimension(50, 50); Теперь, как я должен переместить эту точку зрения? Я нашел несколько способов сделать это.

1: я мог бы сделать что-то вроде canvas.drawRect(new Rect(offsetX, offsetY, right, bottom));, но это увеличит мой Просмотр и, таким образом, my measureWidth / height больше не будет действительным?

2: установить отступ для родительского элемента и тем самым повлиять на left / top View.getLeft() / View.getTop(). Но это повлияет на все дочерние элементы.

3: используйте View.offsetLeftAndRight( number of pixels to move ). Я не совсем понимаю, что это на самом деле делает. Это вызывает какой-то canvas.translate()? Но в этом случае мне нужно сохранить состояние, сколько раз я звонил offsetLeftANdRight(), потому что вызов offsetLeftANdRight(10) и затем offsetLeftANdRight(10) переместит его на 20px.

Я немного запутался в том, что такое «правильный» способ сделать это. Есть ли лучший способ?

1 Ответ

0 голосов
/ 23 ноября 2010

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

Вам необходимо ознакомиться с различными представлениями, которые Android предоставляет для создания макетов: http://developer.android.com/guide/topics/ui/layout-objects.html

Иногда это занимает много времени, так какэлементы будут располагаться по-разному на разных устройствах (и ориентациях), поэтому отношения вида важнее абсолютных позиций.

LinearLayout - хороший универсальный контейнер для размещения элементов управления, хотя RelativeLayout часто более эффективен (еслинемного сложнее в использовании)

Как только элементы расположены друг относительно друга, вы можете использовать отступы и поля для изменения их позиций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...