为什么FrameLayout用于片段?

时间:2013-07-05 18:49:22

标签: java android fragment android-framelayout

无论我在哪里,FrameLayout似乎都被用作FragmentContainer。 为什么始终会在FrameLayout看到Fragments

3 个答案:

答案 0 :(得分:38)

您基本上可以使用RelativeLayoutLinearLayout它仍然可以使用,但您的问题的答案在FrameLayout的文档中:

  

FrameLayout旨在阻挡屏幕上要显示的区域   单个项目。通常,FrameLayout应该用于保存单个   子视图,因为它可能很难组织子视图   在没有孩子的情况下可以扩展到不同屏幕尺寸的方式   相互重叠。但是,您可以将多个子项添加到a   FrameLayout并控制它们在FrameLayout中的位置   使用android:layout_gravity为每个孩子分配重力   属性。

您可以在此处详细了解FrameLayoutFrameLayout/Android Developers

答案 1 :(得分:16)

框架布局的主要目的是阻止适合最大子视图所需的区域。如果使用Frame Layout作为Fragment Container,则可以确保始终具有可用空间以容纳最大的片段布局。

在某些情况下,您可能需要同时在屏幕上显示多个片段,在这种情况下,您应该更喜欢相对或线性布局。

答案 2 :(得分:1)

一切都基于用户要求和所需的定制。

根本没有必要使用FrameLayout。

例如,在下面的代码中没有采用布局,片段本身只包含单个图像视图。

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");

    }
}