2012-05-03 12 views
17

Se trata de diseños de Android. Esto es lo que ansiosamente quiero llegar:¿Hay alguna forma de poner la vista ligeramente fuera de su diseño principal?

Layout

de color gris oscuro es un LinearLayout. Orange es el diseño X y luego Verde es un FrameLayout. Necesito poner a Green fuera de su matriz: diseño X. La jerarquía de diseño descrita no puede modificarse. La única opción es el diseño X: podría ser lo que quieras.

¿Alguna idea?

+0

Odio decirlo, pero la única forma en que puedo pensar es usar un FrameLayout para envolver todo, tener el gris oscuro y el naranja en un diseño lineal y luego colocar el diseño verde sobre los demás. Lo que entra en conflicto con su "La jerarquía de diseño descrita no se puede cambiar". Solo por curiosidad, ¿por qué no? – Barak

+0

Creo que puede especificar valores negativos para los márgenes. ¿Has probado eso? Creo que funciona para diseños donde puede superponerse (dos objetos en un lienzo, por ejemplo). No estoy cerca de ningún editor, de lo contrario lo probaría yo mismo. Sé con certeza que puede tener superposición si todo el diseño es un lienzo, pero no estoy seguro de su situación. – Gophermofur

+0

@Barak: básicamente es una tabla (la fila de la tabla está en la imagen) y en algunas circunstancias necesito mover una sola celda fuera de su posición normal, por lo que los diseños Table/TableRow son los únicos que puedo usar. – agibalov

Respuesta

4

No se puede poner la parte verde en el diseño X, porque no se puede dibujar fuera de sus padres.

Por lo tanto, debe implementar un RelativeLayout o FrameLayout (Diseño raíz) como los padres de todas estas Vistas.

Y ponga la vista verde como la vista de niño del diseño de la raíz.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:layout_width="fill_parent" 
    android:layout_height="200dp" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/layout_dark_grey" 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layout_orange" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_toRightOf="@id/layout_dark_grey" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <RelativeLayout 
     android:id="@+id/layout_green" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="300dp" > 
    </RelativeLayout> 

</RelativeLayout> 
+0

Sé que hay formas de lograrlo mediante el uso de diseños más apropiados en lugar de los que yo uso. Sigo teniendo curiosidad si hay una manera de hacerlo en mi caso. – agibalov

29

Uso -

android:clipChildren="false" 
android:clipToPadding="false" 

en todos los padres de la vista del niño, a continuación, poner 'Margen Izquierda' de la vista sea negativa, que pondrá su vista niño fuera de vista de los padres y de la voluntad ni siquiera recortar la vista.

+1

¡El margen negativo es el ganador! – hellaandrew

+2

Spot on! Cheers – AhmedW

+3

No parece funcionar para mí – Denny

Cuestiones relacionadas