¿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.
- Cambiar el título del encabezado de NavigationView
- Efecto ondulado en estado prensado + transparencia en estado normal
- Cómo crear la interfaz de usuario como la foto adjunta
- Margen relativo de Android RelativeLayout
- Usar fuente Roboto para dispositivos anteriores
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?
- Android - técnicas comunes para escalar diseños de pantalla
- Barras del sistema translúcido y margen de contenido en KitKat
- La vista en el visor no se actualiza (no toma altura)
- Adición de una imagen grande a un cajón de navegación (SlidingMenu libs) - ¿Cómo?
- Recortar el área circular del mapa de bits en Android
- Cerrar Gaveta de navegación sin animación
- Separador de relleno, ignorándolo
- Android - Dos botones en la misma línea que llenan todo el ancho
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).
- Android Wi-Fi Direct: El objeto WifiP2pInfo transmitido a la devolución de llamada onConnectionInfoAvailable tiene propiedad null groupOwnerAddress
- Tamaño del icono del lanzador de cristal de Google