¿Cómo lograr llevar a un niño frente a otro en el grupo de vista personalizado?

Estoy creando mi propio grupo de vistas personalizado en android. Tengo dos niños. Uno es un linealout (es el primer niño y cubre la mitad de la pantalla) con una imagen de fondo y botones sobre él y otro es una extensión de View (es el segundo niño y cubre toda la pantalla) donde dibujo algo usando mi dedo.

Quiero que el Layout Lineal (primer hijo) se oculte debajo de la extensión (segundo hijo) de la vista para poder usar algún gesto para deslizar al segundo hijo a la derecha (como una diapositiva de google, youtube) y ver el primer hijo (LinearLayout). El problema está en el interior de Layout . Coloco a los niños en cierto orden, pero el primer niño (LinearLayout) siempre viene por delante sin importar lo que haga.

secondchild.layout(0,0,top,bottom); firstchild.layout(0,0,top/2,bottom); 

También lo intenté

  firstchild.layout(0,0,top/2,bottom); secondchild.layout(0,0,top,bottom); 

Pero el primer niño viene siempre encima.

Código de vestuario de ViewGroup:

 public class RootViewLayout extends ViewGroup { private View mDrawView; private View mSlideView; private int mTop; private int mDragRange; public RootViewLayout(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { mDrawView = findViewById(R.id.content_frame_white); mSlideView = findViewById(R.id.slide_frame); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); setMeasuredDimension(widthSize, heightSize); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom){ bringChildToFront(mDrawView); mDrawView.layout(0, 0, right, bottom); mSlideView.layout(0, 0, right/2, bottom); } } 

Código XML:

 <com.example.drawapp.RootViewLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/Root_View_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white"> <com.example.drawapp.DrawView android:id="@+id/content_frame_white" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/whitepaperwithcoffeestain"> </com.example.drawapp.DrawView> <LinearLayout android:id="@+id/slide_frame" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/slidebackgrd" android:orientation="vertical"> <Button android:id="@+id/pen" android:layout_width="100dip" android:layout_height="wrap_content" android:background="@drawable/pic"/> </LinearLayout> </com.example.drawapp.RootViewLayout> 

Cuando no pongo

  bringChildToFront(mDrawView); 

el espacio en blanco se coloca con el fondo negro adecuado, pero eso no es lo que realmente quiero. Quiero que toda la pantalla se cubra con DrawView (cuyo fondo es blanco con manchas de café sobre ella).

¿Hay alguna manera específica de decirle a los niños que se coloquen unos encima de otros?

Necesita cambiar el orden z de las vistas secundarias. Usted probablemente debería usar bringChildToFront() , es decir

 parentLayout.bringChildToFront(secondChild); 

Sin embargo, el efecto depende del tipo de la disposición principal (por ejemplo, si se trata de un LinearLayout entonces las vistas se intercambiarían). Puesto que usted está superponiendo supongo que significa que es un RelativeLayout , y entonces debe trabajar como usted desea.

Veo que en su caso usted está utilizando un ViewGroup personalizado. Si es sólo para lograr el "ancho completo / medio ancho" los niños, entonces yo sugeriría intercambiarlo por un RelativeLayout . Añada secondchild con match_parent y firstchild como a la derecha de una vista 0dp centrada como en Adjust width to half screen

O otra opción, posiblemente más simple, es simplemente cambiar la visibilidad en el niño que va en la parte superior (VISIBLE o GONE).

  • Cómo inspeccionar un elemento en el navegador de Android
  • AlertDialog para envolver su contenido
  • Ancho del pie de lista
  • ¿Puedo ocultar un botón de imagen en un diseño, (dimensiones y fondo) hasta que aparezca una llamada para establecerla?
  • TextView de anchura fija con compuesto estirable
  • Herramienta para convertir en lotes bitmaps de recursos de Android a diferentes densidades
  • Cambiar el progreso
  • ¿Cómo cambiar la posición del indicador del grupo ExpandableListView?
  • ¿Por qué desaparecen los elementos cuando se desplaza el listView?
  • Diapositiva de la imagen de Android viewPager de derecha a izquierda
  • Agregar vistas de forma programática en un diseño (lineal) (que está dentro de un ScrollView)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.