• 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()方法来完成。

      

      

  • 相关阅读:
    Gym 101149I: It's the Police (图,思维)
    把ORM封装成一个类(linq to entity)
    jquery跨域,getJson跨域解决方案
    Jquery中AJAX参数详细列表:
    Multipart forms from C# client
    “ThreadPool 对象中没有足够的自由线程来完成操作”的现象和解决办法
    .NET垃圾回收 问题、建议
    C# HttpWebRequest保存cookies模拟登录的方法
    基础连接已经关闭:服务器关闭了本应保持活动状态的连接 解决方法
    C# 模拟上传图片
  • 原文地址:https://www.cnblogs.com/whongs/p/6744632.html
Copyright © 2020-2023  润新知