2013-06-27 3 views
11

просто интересно, можно ли перекрывать два элемента?Android: Перекрытие двух видов (преднамеренно!)

Это является иллюстрацией того, что им пытаются достичь:

enter image description here

В основном его круг ImageButton, центр которой лежит на углу прямоугольника. Как мне его позиционировать? Могу ли я использовать RelativeLayout или что-то еще?

+0

Я бы обернул оба вида в RelativeLayout и выровнял перекрытый вправо и снизу родителя. – Machinarius

+0

Если вы указали ссылку на свое изображение, кто-то отредактирует ее на вопрос для вас. –

+0

http://chesnutcase.heliohost.org/derpbox/overlayout.png – chesnutcase

ответ

21

Вы можете использовать RelativeLayout для синего поля, выровнять ImageView в верхнем правом углу, а затем использовать отрицательные поля, чтобы надавить на ограничивающий прямоугольник. Вот пример, иллюстрирующий общую идею:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 



    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true"   
     android:layout_marginTop="-10dp" 
     android:layout_marginRight="-10dp" 
     android:src="@drawable/icon"/> 
</RelativeLayout> 

EDIT: я играл с этим немного больше, и вы должны установить Android: clipChildren = «ложь» на родителя RelativeLayout. Вот более полный пример:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context=".LoginActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:clipChildren="false"> 
    <RelativeLayout 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:background="#ff0000" 
      android:layout_margin="100dp"> 
     <ImageView 
       android:src="@drawable/ic_launcher" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_marginRight="-25dp" 
       android:layout_marginTop="-25dp"/> 
    </RelativeLayout> 
</LinearLayout> 
+0

хорошо, он работал с точки зрения позиционирования, но что-то неожиданное появилось. http://chesnutcase.heliohost.org/derpbox/overlayout2.png Как вы можете видеть, красная кнопка обрезана, хотя ее довольно много в правильном положении. – chesnutcase

+0

Попробуйте установить android: clipToPadding = "false" на RelativeLayout. – danh32

+0

ОК, на этот раз он показал больше себя, но 3 четверти его все еще скрыты. что это все равно? также, если это помогает, этот ящик является относительной компоновкой сам по себе, весь xml также является относительным расположением. http://chesnutcase.heliohost.org/derpbox/overlayout3.png – chesnutcase

3

Очень простое решение занимает край изображения ImageView в отрицательных значениях (например, -40dp). Но он работает только в некоторых ситуациях.

0

Другим простым подходом было бы использование двух прозрачных изображений. Эти изображения будут отображаться в верхней и правой частях синего макета. Установите фон этого изображения в виде # 00000000, чтобы сделать его прозрачным.