【问题标题】:Using ConstraintLayout in creating a fragment在创建片段时使用 ConstraintLayout
【发布时间】:2017-05-10 07:55:50
【问题描述】:

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

【问题讨论】:

    标签: java android android-layout android-fragments android-constraintlayout


    【解决方案1】:

    您可以使用ConstraintLayout 来包含Fragment。它也可以是Fragment 的基础视图。但是,我通常使用FrameLayout 作为支架,因为大多数时候没有理由使用诸如ConstraintLayout 之类的复杂布局。

    如您所见,FragmentTransaction.add() 没有对containerViewId View 施加限制。

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

    【讨论】:

      猜你喜欢
      • 2014-03-17
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多