Как разместить вид в определенном пикселе/позиции

Мне нужно поместить представление (например, изображение) в пользовательскую точку интерфейса. Есть ли способ поместить вид в точный пиксель/виртуальный пиксель (dp) - зону экрана?

Мне нужно, чтобы представление отображалось над другими представлениями.

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

РЕДАКТИРОВАТЬ:

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


person Aracem    schedule 17.11.2011    source источник


Ответы (3)


Вы можете установить поля для макетов и отступы для представлений внутри них, а также указать там положение относительно краев или других представлений. Также вы можете указать фиксированную позицию для макетов, заменив (match_parent/fill_parent или wrap_content) фактическим размером (обратите внимание, что вы должны указать все размеры в dp или dip). Например, у вас есть линейный макет, и вы хотите, чтобы изображение было 20 dp. справа от левого поля вы можете попробовать что-то вроде этого:

<LinearLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android::layout_marginLeft="20dp">
   <!-- Nest your views here and if you want you can set padding for them

</LinearLayout>

Если вы хотите, чтобы ваши представления находились в определенной части экрана, например, в верхней части экрана, в нижней части экрана и т. д., вы можете вложить их все в RelativeLayout. Это хороший способ сделать это, и он устранит любую путаницу.

Удачи, Аркде

person Aurelian Cotuna    schedule 17.11.2011
comment
Привет, Аркде, я забыл сказать, что мне нужно поставить представление программно и после того, как интерфейс будет построен. Прекрасным примером является, например, размещение представления, похожего на рекламу Google Admob, хорошо? Программа запускается и потом звонишь в адмоб и адмоб ставишь рекламу. Проблема в том, что у меня нет представления в моем xml, и мне нужно поместить новое представление в произвольное место, например, на 20% экрана сверху или на половину экрана или, возможно, внизу или... Как вы говорите, что относительный макет возможен, но если бы мы нашли метод, более прозрачный для будущих разработчиков - person Aracem; 17.11.2011
comment
Я все еще думаю, что Relative Layout остается лучшей практикой, так как вы можете управлять поворотом экрана довольно легко и без каких-либо других осложнений. Вы можете задать относительные параметры макета программно или раздуть их для ускорения (скомпилированный код из xml выполняется напрямую, а не интерпретируется), и вы можете сделать то же самое для вложенных представлений :) - person Aurelian Cotuna; 17.11.2011

Как насчет FrameLayout, как в примере, который я опубликовал здесь?

person Narcís Calvet    schedule 17.11.2011
comment
Грасиас Нарцис, Спасибо, Нарцисс, я смешаю ваш ответ и ответ Аркде, чтобы решить мою проблему. - person Aracem; 17.11.2011

Вы можете использовать AbsoluteLayout, хотя он и устарел.

person Community    schedule 17.11.2011