• Fragment基础创建


    1,Fragment的目的及应用场景

    fragment 是3.0后引入的类,其字面翻译为“碎片”。

    目的是将activity划分成许多单元再进行组合,可以根据不同分辨率屏幕,在不同状态下,灵活创建优化UI并提高复用性。

    2,Fragment的创建

    第一种方式:通过xml标签创建

      step 1:创建fragment类继承fragment关系类,其中导包的时候app包为3.0以后使用,v4包可以向下兼容

      step 2:在activity的xml文件中添加fragment标签并添加name属性为fragment全路径

       <fragment
            android:id="@+id/fragment_center"
            android:name="singleorb.com.fragment.FragmentCenter"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="5" />
    
        <fragment
            android:id="@+id/fragment_bottom"
            android:name="singleorb.com.fragment.FragmentBottom"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
    

      

      step 3:创建fragment类的布局文件,

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#00ff11">
    
    </LinearLayout>
    

      

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#ff0000">
    
    </LinearLayout>
    

      

      step 4:并在onCreateView中添加

    public class FragmentBottom extends Fragment {
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_xml_bottom, container, false);
            return view;
        }
    }
    

      

    public class FragmentCenter extends Fragment {
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_xml_center, container, false);
            return view;
        }
    }
    

      step 5:启动即可看到结果,把activity分成两部分

    第二种方式:通过Java代码方式创建

      1,只需把第一种方法的fragment标签换成FramLayout去掉name属性

      <FrameLayout
            android:id="@+id/fragment_code_center"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="5" />
    
        <FrameLayout
            android:id="@+id/fragment_code_bottom"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
    

      

      2, 然后再在activity中添加相应引入代码即可

    /*
     *java 代码动态添加fragment 需要两个操作对象
     * FragmentManager     
      *FragmentTransaction
     */
            //获取FragmentManager实例
            FragmentManager fragmentManager = getFragmentManager();
            //开启事务
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            //添加布局文件
            fragmentTransaction.add(R.id.fragment_code_center, new FragmentCenter());
            fragmentTransaction.add(R.id.fragment_code_bottom, new FragmentBottom());
            //提交
            fragmentTransaction.commit();
    

      

    得到的结果和用xml创建的一样,但是用Java代码来创建可以更灵活的使用所以推荐应用Java代码方式创建

  • 相关阅读:
    自定义NHibernate映射类型
    IIS AppCreate子目录的错误(0x80020006)
    NHibernate 慎用IList
    開發記要 詭異的變量
    发布个jquery的绑定工具 jquery.bindTools 1.5
    Python学习笔记:jupyter notebook设置自动换行
    Python学习笔记:pandas透视表之pivot_table、pivot
    Python学习笔记:一道stack & pivot搞定的练习题
    Python学习笔记:描述性统计describe
    Python学习笔记:类别设置之category与set_categories
  • 原文地址:https://www.cnblogs.com/Singleorb/p/5183148.html
Copyright © 2020-2023  润新知