varios tutorial studio setcontentview paso parametros navegar llamar fragments example entre desde activity java android fragment framelayout

java - tutorial - ¿Por qué se utiliza un FrameLayout para los fragmentos?



setcontentview fragment (3)

Básicamente, puedes usar RelativeLayout o LinearLayout todavía funcionará, pero la respuesta a tu pregunta está en la documentación de FrameLayout :

FrameLayout está diseñado para bloquear un área en la pantalla para mostrar un solo elemento. Generalmente, FrameLayout se debe usar para mantener una sola vista secundaria, ya que puede ser difícil organizar las vistas secundarias de una manera que se pueda escalar a diferentes tamaños de pantalla sin que los niños se superpongan entre sí. Sin embargo, puede agregar varios hijos a un FrameLayout y controlar su posición dentro del FrameLayout asignando la gravedad a cada niño, usando el atributo android: layout_gravity.

Puede leer más sobre FrameLayout aquí: FrameLayout / Android Developers

Dondequiera que miro, FrameLayout parece ser usado como FragmentContainer . ¿Por qué FrameLayout siempre se ve con Fragments ?


El propósito principal de la disposición del marco es bloquear el área requerida para adaptarse a la vista infantil más grande. Si usa un diseño de marco como contenedor de fragmentos, puede asegurarse de tener siempre el espacio disponible para acomodar el diseño de fragmento más grande.

En algunos casos, es posible que deba tener más de 1 fragmento en pantalla simultáneamente, en ese caso, debe preferir el diseño relativo o lineal.


Todo se basa en los requisitos del usuario y la personalización necesaria.

No es necesario utilizar FrameLayout en absoluto.

Por ejemplo, en el siguiente código no se toma ningún diseño, y el fragmento en sí solo contiene una vista de imagen única.

public class MyFragment extends Fragment implements OnClickListener{ String TAG="MyFragment"; Context c; MyFragment(Context con){ c=con; } @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub ImageView v=new ImageView(c); //other imageview stuff return v; } @Overrides public void onClick(View v) { // TODO Auto-generated method stub Log.i(TAG, "onClcik"); } }