簡體   English   中英

為什么FrameLayout用於片段?

[英]Why is a FrameLayout used for fragments?

無論我在哪里, FrameLayout似乎都被用作FragmentContainer 為什么FrameLayout總是與Fragments

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

FrameLayout旨在阻止屏幕上的某個區域顯示單個項目。 通常,FrameLayout應該用於保存單個子視圖,因為很難以可擴展到不同屏幕大小而兒童不會相互重疊的方式組織子視圖。 但是,您可以使用android:layout_gravity屬性將多個子項添加到FrameLayout並通過為每個子項分配重力來控制它們在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");

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM