【问题标题】:Why is a FrameLayout used for fragments?为什么 FrameLayout 用于片段?
【发布时间】:2013-07-03 22:18:43
【问题描述】:

无论我在哪里看,FrameLayout 似乎都被用作FragmentContainer。 为什么FrameLayout 总是和Fragments 一起出现?

【问题讨论】:

  • 2020 年的评论:您现在应该使用 FragmentContainerView,因为它包含对退出 Fragment 的修复。

标签: java android fragment android-framelayout


【解决方案1】:

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

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

您可以在此处阅读有关FrameLayout 的更多信息:FrameLayout/Android Developers

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      完全没有必要使用 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");
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-10
        • 1970-01-01
        • 1970-01-01
        • 2013-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多