ImageView setMargins не работает

У меня есть FrameLayout, у которого есть 2 изображения, большой, который заполняет FrameLayout и очень маленький, который я хочу перемещать.

Я пытаюсь переместить маленький такой вот так: xml-файл

<FrameLayout android:id="@+id/layTrackMap" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone"> <ImageView android:id="@+id/imgTrackMap" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/imgPosition" android:layout_width="wrap_content" android:src="@drawable/position" android:layout_height="wrap_content" /> </FrameLayout> 

И код:

 imgPosition = (ImageView)findViewById(R.id.imgPosition); FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); //Neither this: //lp.setMargins(30, 20, 0, 0); //Or this lp.leftMargin=30; lp.topMargin=80; imgPosition.setLayoutParams(lp); 

Маленькое изображение не перемещается. Я хочу, чтобы можно было перемещать небольшое изображение вокруг в макете.

LATER EDIT: после нескольких предложений я пришел к выводу, что проще просто сделать собственный просмотр и переопределить onDraw для выполнения задания.

Все в FrameLayout фиксируется в верхнем левом углу и не может перемещаться, даже устанавливая поля. Но вы можете получить тот же результат, используя прописку …

 imgPosition.setPadding(30, 80, 0, 0); 

Вы также должны установить гравитацию, чтобы использовать поля:

 lp.gravity = Gravity.LEFT | Gravity.TOP; 
 FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); lp.gravity = Gravity.LEFT | Gravity.TOP; lp.setMargins(left, top, right, bottom); imgPosition1.setLayoutParams(lp); lp = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); lp.gravity = Gravity.LEFT | Gravity.TOP; lp.setMargins(left, top, right, bottom); imgPosition2.setLayoutParams(lp); 

Мне удалось использовать setMargin так же, как обычный setPadding вам нужно установить новый параметр макета для каждого изображения, imageview вы хотите установить маржу

Intereting Posts
Интеграция Unity с Eclipse – Как следовать инструкциям «официального» руководства? Как изменить макет (без кодирования) в Android Studio Как работает функция gluProject? Я не могу это понять Как проверить текст edittext – это адрес электронной почты или нет? Преобразование ForeignCollection в ArrayList – ORMLite, Gson и Android Ошибка сборки Android из-за неправильной версии java Android: не удалось установитьContentView при переключении на ListActivity Android Emulator не может подключиться к веб-камере с «непризнанной ошибкой формата пикселя», Как очистить edittext при onclick на кнопке Как показать значок на карте google Как отключить нажатие на ListView в android? Как отправить данные на созданную активность на Android Проект LibGDX написан на Scala, на Android, используя IntelliJ Обновить / перезагрузить ссылку базы данных в пользовательском ContentProvider после восстановления Получить идентификатор для просмотров, которые добавляются динамически