web-dev-qa-db-fra.com

Utilisation de ConstraintLayout pour créer un fragment

Je me demande s'il est possible de créer une disposition de fragment en utilisant ConstraintLayout ou non!? Est-ce une bonne approche? ou existe-t-il un élément racine standard pour créer un fragment?

12
mhd.saboori

Vous pouvez utiliser un ConstraintLayout pour contenir un Fragment. Il peut également s'agir de la vue de base d'un Fragment. Cependant, j'utilise généralement un FrameLayout comme support car la plupart du temps il n'y a aucune raison d'utiliser une mise en page complexe telle que ConstraintLayout.

Comme vous pouvez le voir, FragmentTransaction.add() ne met pas de restrictions pour le containerViewIdView.

/**
 * Add a fragment to the activity state.  This fragment may optionally
 * also have its view (if {@link Fragment#onCreateView Fragment.onCreateView}
 * returns non-null) inserted into a container view of the activity.
 *
 * @param containerViewId Optional identifier of the container this fragment is
 * to be placed in.  If 0, it will not be placed in a container.
 * @param fragment The fragment to be added.  This fragment must not already
 * be added to the activity.
 * @param tag Optional tag name for the fragment, to later retrieve the
 * fragment with {@link FragmentManager#findFragmentByTag(String)
 * FragmentManager.findFragmentByTag(String)}.
 *
 * @return Returns the same FragmentTransaction instance.
 */
public abstract FragmentTransaction add(@IdRes int containerViewId, Fragment fragment, String tag);

De même Fragment.onCreateView() peut retourner n'importe quelle vue:

/**
 * Called to have the fragment instantiate its user interface view.
 * This is optional, and non-graphical fragments can return null (which
 * is the default implementation).  This will be called between
 * {@link #onCreate(Bundle)} and {@link #onActivityCreated(Bundle)}.
 *
 * <p>If you return a View from here, you will later be called in
 * {@link #onDestroyView} when the view is being released.
 *
 * @param inflater The LayoutInflater object that can be used to inflate
 * any views in the fragment,
 * @param container If non-null, this is the parent view that the fragment's
 * UI should be attached to.  The fragment should not add the view itself,
 * but this can be used to generate the LayoutParams of the view.
 * @param savedInstanceState If non-null, this fragment is being re-constructed
 * from a previous saved state as given here.
 *
 * @return Return the View for the fragment's UI, or null.
 */
@Nullable
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState)
13