¿Cómo mostrar un diseño uno encima del otro programáticamente en mi caso?

Mi diseño principal main.xml simplemente contiene dos LinearLayouts:

  • El 1st LinearLayout aloja un VideoView y un Button ,
  • El 2nd LinearLayout aloja un EditText , y este LinearLayout ha establecido el valor de visibilidad en ” GONE ” ( android:visibility="gone" )

como abajo:

    

Implementé con éxito la función de que cuando se presiona el Button (con id my_btn), se muestra el campo 2nd LinearLayout with EditText , con el siguiente código de Java:

 LinearLayout secondLL = (LinearLayout) findViewById(R.id.second_ll); Button myBtn = (Button) findViewById(R.id.my_btn); myBtn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ int visibility = secondLL.getVisibility(); if(visibility==View.GONE) secondLL.setVisibility(View.VISIBLE); } }); 

Con el código de Java anterior, el 2nd LinearLayout con EditText se muestra como anexando debajo del 1st LinearLayout que tiene sentido.

PERO , lo que necesito es: cuando se presiona el Button (id: my_btn), el 2nd LinearLayout con EditText se muestra en la parte superior del 1st LinearLayout , que parece que el 2nd LinearLayout con EditText está subiendo desde la parte inferior de la pantalla, y el segundo LinearLayout con EditText solo ocupa parte de la pantalla desde abajo, es el 1er LinearLayout aún visible, como se muestra en la siguiente imagen:

enter image description here

Entonces, cuando se presiona Button (id: my_btn), ¿cómo mostrar el 2nd LinearLayout con EditText en la parte superior del 1st LinearLayout lugar de LinearLayout 2nd LinearLayout debajo de 1st LinearLayout programáticamente?

Use un FrameLayout con dos niños. Los dos niños se superponen. Esto se recomienda en uno de los tutoriales de Android en realidad, no es un truco …

Aquí hay un ejemplo donde se muestra un TextView sobre un ImageView:

     

Aquí está el resultado

La respuesta, dada por Alexandru, está funcionando bastante bien. Como dijo, es importante que esta vista de “acceso” se agregue como último elemento. Aquí hay un código que me hizo el truco:

  ... ...         

en Java:

 final MaterialDialog materialDialog = (MaterialDialog) dialogInterface; FrameLayout frameLayout = (FrameLayout) materialDialog .findViewById(R.id.icon_frame_container); frameLayout.setOnTouchListener( new OnSwipeTouchListener(ShowCardActivity.this) { 

FrameLayout no es la mejor manera de hacer esto:

Use RelativeLayout lugar. Puede colocar los elementos en cualquier lugar que desee. El elemento que viene después, tiene el índice z más alto que el anterior (es decir, viene del anterior).

Ejemplo:

 < ?xml version="1.0" encoding="utf-8"?>     

enter image description here