zoukankan      html  css  js  c++  java
  • Android开发系列之探究碎片

      碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕空间,而在平板上应用的非常广泛,下面就用代码的方式来讲解一下碎片的基础用法。

    一、碎片的简单用法

      这里我们假设将活动平分为两个部分,左右各有一个碎片,新建一个左侧的碎片布局left_fragment.xml,代码如下所示:

        <!—放置一个按钮,水平居中—>
        <Button
            android:id="@+id/left_btn01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="Button"
            android:textAllCaps="false"
            />

      新建右侧的碎片布局right_fragment.xml,代码如下所示:

    <TextView
            android:id="@+id/right_textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textSize="20sp"
            android:text="this is right fragement"
            />

      接着创建一个LeftFragent类,继承自Fragment

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

      创建一个RightFragment类,继承自Fragment

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

      然后在活动FirstActivity对应的XML文件中添加布局

     1 <fragment
     2         android:id = "@+id/left_fragment"
     3         android:layout_width="0dp"
     4         android:layout_height="match_parent"
     5         android:name="com.example.whs.fragementproject.LeftFragment"
     6         android:layout_weight="1"
     7         >
     8     </fragment>
     9 
    10     <fragment
    11         android:id = "@+id/right_fragment"
    12         android:layout_width="0dp"
    13         android:layout_height="match_parent"
    14         android:name="com.example.whs.fragementproject.RightFragment"
    15         android:layout_weight="1"
    16         >
    17     </fragment>

      至此,一个简单的碎片实例就已经写好了。当然,这非常简单,接下来我们会在上面代码的基础上来详细讲解一些其它有关碎片的知识。

    二、动态添加碎片

      新建XML文件another_right_fragment.xml

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textSize="20sp"
            android:text="this is another right fragment"
            />

      创建一个AnotherRightFragment类,继承自Fragment

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

      然后在活动FirstActivity对应的XML文件

     1 <fragment
     2         android:id = "@+id/left_fragment"
     3         android:layout_width="0dp"
     4         android:layout_height="match_parent"
     5         android:name="com.example.whs.fragementproject.LeftFragment"
     6         android:layout_weight="1"
     7         >
     8     </fragment>
     9 
    10 
    11     <FrameLayout
    12         android:id="@+id/right_layout"
    13         android:layout_width="0dp"
    14         android:layout_height="match_parent"
    15         android:layout_weight="1"
    16         >
    17     </FrameLayout>

      然后在活动FirstActivity类中添加按钮点击事件,动态添加碎片

    public void leftAction(View view){
            AnotherRightFragment fragment = new AnotherRightFragment();
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.replace(R.id.right_layout, fragment);
            transaction.commit();
    
        }

      1,创建待添加的碎片实例

      2,获取到FragmentManager,在活动中可以直接调用getFragmentManager()方法得到。

      3,开启一个事务,通过调用beginTransaction()方法开启。

      4,向容器内加入碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例。

      5,提交事务,调用commit()方法来完成。

      

      

  • 相关阅读:
    TCP全局同步
    pytest框架之fixture详细使用
    库操作和表操作
    封装之如何隐藏对象及封装的意义
    类的抽象
    组合
    在子类中重用父类的方法和属性
    类的继承和实现原理
    类的使用,对象的使用
    互联网协议的五层协议详解
  • 原文地址:https://www.cnblogs.com/whongs/p/6744632.html
Copyright © 2011-2022 走看看