Android наложение снаружи / между границами макета

Я должен добавить оверлей (ImageView), чтобы он немного сместился влево от левой границы содержащего макета.

Каков наилучший способ сделать это?

Пробовал что-то простое, например, поместить ImageView внутри макета и использовать отрицательное поле

android:layout_marginLeft="-20dip"

Это сделало это:

(Исправление: текст на изображении должен быть 20dip, а не 20px)

AbsoluteLayout устарела. Есть ли что-то вроде z-порядка? Или что мне делать?

Заранее спасибо.

Изменить: я попытался использовать относительный макет вместо. Тот же эффект. Вот xml, сведенный к минимуму:

<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:paddingLeft="50dip"
>

<ImageView
    android:id="@+id/myId"
    android:layout_width="60dip"
    android:layout_height="60dip"
    android:layout_marginLeft="-30dip"
    android:clipChildren="false"
    android:src="@drawable/pic" />

</RelativeLayout>

Результат

Также происходит, когда содержащий макет имеет фоновое изображение меньше, чем экран вместо отступов.

4 ответа

Решение

Использование RelativeLayout вместо LinearLayout (чтобы разрешить перекрытие) и добавление этого к RelativeLayout исправило это:

android:clipToPadding="false"

Вместо

андроид:layout_marginLeft="-30dip"

попробуй с

андроид:paddingLeft="-30dp"

Установите "android:clipChildren = false" в xml

Используйте прозрачное (android:background="#00000000") изображение слева от линейного макета с шириной = 30dp. И сделайте myId как выравнивание по левому краю в случае относительного расположения. Если вы используете линейный макет, сделайте ориентацию горизонтальной и позвольте прозрачному изображению быть первой записью в нем.

Другие вопросы по тегам