无论我在哪里,FrameLayout
似乎都被用作FragmentContainer
。
为什么始终会在FrameLayout
看到Fragments
?
答案 0 :(得分:38)
您基本上可以使用RelativeLayout
或LinearLayout
它仍然可以使用,但您的问题的答案在FrameLayout
的文档中:
FrameLayout旨在阻挡屏幕上要显示的区域 单个项目。通常,FrameLayout应该用于保存单个 子视图,因为它可能很难组织子视图 在没有孩子的情况下可以扩展到不同屏幕尺寸的方式 相互重叠。但是,您可以将多个子项添加到a FrameLayout并控制它们在FrameLayout中的位置 使用android:layout_gravity为每个孩子分配重力 属性。
您可以在此处详细了解FrameLayout
:FrameLayout/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");
}
}