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

      

      

  • 相关阅读:
    jmeter如何操作数据库
    jmeter压力测试
    cmd中用ping命令时,提示ping命令不是外部或内部命令问题
    scrapy post Request payload类型值
    scrapy-deltafetch实现增量爬取
    django虚拟环境搭建笔记
    python Image模块基本语法
    登录北京住房公积金,使用已注册过账号
    登录北京社保网站
    python通过pop3方式登录邮箱(qq,新浪,网易)
  • 原文地址:https://www.cnblogs.com/whongs/p/6744632.html
Copyright © 2011-2022 走看看