zoukankan      html  css  js  c++  java
  • 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代码方式创建

  • 相关阅读:
    使用babel插件集
    使用babel
    webpack基本配置
    vue-router参数传递
    路由(二) router-link的使用
    路由使用(一)
    获取DOM
    父组件传递值给子组件(一)
    定义全局组件
    Windows下更改MySQL数据库的存储位置
  • 原文地址:https://www.cnblogs.com/Singleorb/p/5183148.html
Copyright © 2011-2022 走看看