为什么用于片段的FrameLayout?

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

Related of "为什么用于片段的FrameLayout?"

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

FrameLayout被devise为阻挡屏幕上的一个区域来显示单个项目。 一般来说,应该使用FrameLayout来保存单个子视图,因为以不同的屏幕尺寸可扩展的方式来组织子视图可能是困难的,而这些子视图没有儿童重叠。 但是,您可以将多个子元素添加到FrameLayout,并通过使用android:layout_gravity属性为每个子元素分配重力来控制其在FrameLayout中的位置。

你可以在这里阅读更多关于FrameLayout : FrameLayout / Android Developers

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

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

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

根本没有必要使用FrameLayout。

例如在下面的代码中没有布局,而且片段本身只包含一个imageview。

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