无论我在哪里看,FrameLayout
似乎都被用作FragmentContainer
. 为什么FrameLayout
总是看到用Fragments
?
问问题
20988 次
3 回答
43
您基本上可以使用RelativeLayout
或者LinearLayout
它仍然可以使用,但是您的问题的答案在FrameLayout
's 文档中:
FrameLayout 旨在阻止屏幕上的一个区域以显示单个项目。通常,应该使用 FrameLayout 来保存单个子视图,因为很难以一种可缩放到不同屏幕尺寸的方式组织子视图,而不会使子视图相互重叠。但是,您可以使用 android:layout_gravity 属性将多个子项添加到 FrameLayout 并通过为每个子项分配重力来控制它们在 FrameLayout 中的位置。
您可以在此处阅读更多信息FrameLayout
:FrameLayout/Android 开发人员
于 2013-07-05T18:53:37.820 回答
21
框架布局的主要目的是阻止适合最大子视图所需的区域。如果您使用 Frame Layout 作为 Fragment Container,您可以确保始终有可用空间来容纳最大的 Fragment 布局。
在某些情况下,您可能需要同时在屏幕上显示超过 1 个片段,在这种情况下,您应该更喜欢相对或线性布局。
于 2013-07-05T19:13:37.793 回答
2
一切都基于用户要求和所需的定制。
根本不需要使用 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");
}
}
于 2013-07-05T19:14:51.057 回答