在创建片段时使用约束布局

我想知道是否可以使用 ConstraintLayout 创建片段布局!?这是一种正确的方法吗?或者是否有任何用于创建片段的标准根元素?


答案 1

可以使用 包含 .它也可以是 .但是,我通常使用 a 作为支架,因为大多数时候没有理由使用复杂的布局,例如 .ConstraintLayoutFragmentFragmentFrameLayoutConstraintLayout

如您所见,没有对 .FragmentTransaction.add()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);

同样可以返回任何视图:Fragment.onCreateView()

/**
 * 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)

答案 2

推荐