Можно ли установить абсолютную позицию вида в Android? (Я знаю, что есть AbsoluteLayout
, но это устарело ...)
Например, если у меня экран размером 240x320 пикселей, как я могу добавить экран размером 20x20 ImageView
пикселей, чтобы его центр находился в позиции (100 100)?
view.setTranslationX()
илиview.offsetLeftAndRight()
Ответы:
Вы можете использовать RelativeLayout. Допустим, вы хотели 30x40 ImageView в позиции (50,60) внутри макета. Где-то в вашей деятельности:
Больше примеров:
Размещает два 30x40 ImageViews (один желтый, один красный) в (50,60) и (80,90) соответственно:
Помещает один 30x40 желтый ImageView в (50,60) и другой 30x40 красный ImageView <80,90> относительно желтого ImageView:
источник
ImageView
чтобы положить, не лучше ли будет использоватьFrameLayout
?В общем случае вы можете добавить View в определенную позицию, используя FrameLayout в качестве контейнера, указав атрибуты leftMargin и topMargin .
Следующий пример поместит ImageView размером 20x20 пикселей в позицию (100,200), используя FrameLayout в качестве полноэкранного контейнера:
XML
Деятельность / Фрагмент / Пользовательский вид
Это поможет, потому что поля можно использовать как абсолютные (X, Y) координаты без RelativeLayout:
источник
Просто добавьте к ответу Энди Чжана, приведенному выше, если вы хотите, вы можете задать параметр для rl.addView, а затем внести в него изменения, поэтому:
С таким же успехом можно записать как:
Поэтому, если вы сохраните переменную params, вы можете изменить макет iv в любое время после добавления его в rl.
источник
Более чистый и динамичный способ без жесткого кодирования любых значений пикселей в коде.
Я хотел расположить диалог (который я раздуваю на лету) точно ниже нажатой кнопки.
и решил это так:
Однако вы должны убедиться, что родительский макет
myView
является экземпляромRelativeLayout
.более полный код:
Таким образом, вы все равно можете ожидать, что целевое представление будет корректироваться в соответствии с любыми параметрами макета, установленными с использованием файлов макета XML, вместо жесткого кодирования этих пикселей / dps в коде Java.
источник
Поместите любую точку зрения по вашему желанию X & Y point
файл макета
Класс Java
Готово
источник
На всякий случай это может помочь кому-то, вы также можете попробовать этот аниматор ViewPropertyAnimator, как показано ниже
кредиты к ответу bpr10
источник
Попробуйте следующий код, чтобы установить вид на конкретное место: -
источник
Мой код для Xamarin , я использую FrameLayout для этой цели и следующий код:
Это было полезно для меня, потому что мне нужно было, чтобы свойство view перекрывало друг друга на основании их внешнего вида, например, представления были сложены один над другим .
источник