codecamp

Android UI Android碎片

在小屏幕设备中,activity通常填充整个屏幕。而这个activity是一个视图的容器。

为了更好地在平板电脑上组织UI,我们可以使用“mini-activities”。每个mini-activities包含自己的一组视图。

一个activity可以包含一个或多个这些mini-activities。这些mini-activities被称为碎片(Fragment)。

碎片可以包含视图,就像activity一样。碎片总是会嵌入在一个activity中。

碎片形成用户界面的原子单位,可以在activity中动态添加或删除。

我们可以将Android中的片段的概念视为桌面用户界面中的面板。

添加碎片

以下代码显示了碎片的基本用法。

res/layout 文件夹中,添加一个新文件并将其命名为 fragment1.xml 。填写以下内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00FF00"
    >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This is fragment #1"
        android:textColor="#000000"
        android:textSize="25sp" />
</LinearLayout>

另外在 res/layout 文件夹中,添加另一个新文件,并将其命名为 fragment2.xml 。填充如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFE00"
    >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This is fragment #2"
        android:textColor="#000000"
        android:textSize="25sp" />
</LinearLayout>

activity_main.xml 中,添加以下代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <fragment
        android:name="cn.w3cschool.myapplication3.app.Fragment1"
        android:id="@+id/fragment1"
        android:layout_weight="1"
        android:layout_width="0px"
        android:layout_height="match_parent" />
    <fragment
        android:name="cn.w3cschool.myapplication3.app.Fragment2"
        android:id="@+id/fragment2"
        android:layout_weight="1"
        android:layout_width="0px"
        android:layout_height="match_parent" />

</LinearLayout>

com.java2s.Fragments 包名称下,添加两个Java类文件并将其命名为 Fragment1.java Fragment2.java,将以下代码添加到 Fragment1.java

package cn.w3cschool.myapplication3.app;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        //Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment1, container, false);
    }
}

将以下代码添加到 Fragment2.java :

package cn.w3cschool.myapplication3.app;
//  www.w3cschool.cn
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment2 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        //Inflate the layout for this fragment
        return inflater.inflate(
                R.layout.fragment2, container, false);
    }
}
Android碎片

注意

一个碎片的行为非常像一个activity,它有:

  • 一个Java类
  • 它从XML文件加载其UI。

XML文件包含你预期从某个activity获得的所有常用UI元素:TextView,EditText,Button等。

碎片的Java类需要扩展 Fragment 基类:

public class Fragment1 extends Fragment {
}

除了 Fragment 基类,碎片还可以扩展一些Fragment 类的其他几个子类,例如 DialogFragmentListFragmentPreferenceFragment

要绘制碎片的UI,请覆盖 onCreateView()方法。此方法需要返回一个View对象。

你可以使用LayoutInflater对象从指定的XML文件中扩充UI。要向activity添加片段,请使<fragment>元素。

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="horizontal" >
/*  www.w3cschool.cn*/
          <fragment
              android:name="cn.w3cschool.Fragments.Fragment1"
              android:id="@+id/fragment1"
              android:layout_weight="1"
              android:layout_width="0px"
              android:layout_height="match_parent" />
          <fragment
              android:name="cn.w3cschool.Fragments.Fragment2"
              android:id="@+id/fragment2"
              android:layout_weight="1"
              android:layout_width="0px"
              android:layout_height="match_parent" />

      </LinearLayout>

每个碎片需要唯一的标识符。



Android UI View和ViewGroup
Android UI教程 - Android GridView
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }