Board logo

標題: Fragment [打印本頁]

作者: tonyh    時間: 2019-8-9 14:34     標題: Fragment

本帖最後由 tonyh 於 2019-8-9 14:38 編輯

什麼是Fragment

Fragment (中譯:片段、區塊) 是Android提供的一個畫面區塊,可將Fragment放在一個Activity中,可使用多個Fragment構成一個手機畫面。因此,Fragment是Activity的子畫面,如下圖:



在Activity中的每個Fragment擁有自己的生命週期,當Activity進入暫停時,Activity內的Fragment也會自動執行相對的生命週期方法,在Fragment中覆寫這些方法,可自訂區塊的功能設計。例如,何時要重新讀取資料、何時暫停處理資料等。

在2009年Android剛嶄露頭角時,手機的畫面不大,解析度也不高,一個畫面放不了太多資訊,因此使用Activity轉換到另一個Activity的方式來設計功能,如下圖:



像是在Activity1中顯示消費清單,當按下清單中的其中一個項目時,在Activity2顯示該筆消費的詳細資訊。

但從2010年時平板開始流行後,畫面變大、解析度變高,一個畫面可容納更多的元件了,2011年初Android 3.0推出時,即加入了Fragment元件,可在Activity中加入Fragment區塊,使其可在一個畫面下容納多個區塊的顯示,並自訂每個區塊的內容,或者更換其中一個區塊功能。

Fragment的生命週期

每個Fragment擁有自己的生命週期,也就是說,在特定的狀況會自動呼叫特定的方法,供使用者依功能需求覆寫這些方法,加入必要的程式碼。依照Fragment產生與出現的順序會執行的方法描述如下:

產生階段(未出現在畫面上)

onAttach()
當Fragment被加到某個Activity畫面中時,會自動呼叫此方法。

onCreate()
Fragment被建立時會自動呼叫此方法,可加入初始化元件或資料的程式碼。

onCreateView()
將在畫面中第一次顯示Fragment時會自動呼叫此方法,必須回傳Fragment畫面的View元件,設計時,請使用方法中的LayoutInflater物件,在此方法中產生畫面元件並回傳。

onActivityCreated()
當加入本Fragment的Activity被建立時,該Activity的onCreate方法執行完成後,會自動執行此方法。執行完此方法後,Fragment才出現在畫面上。

準備階段(出現在畫面上)

onStart()
當Fragment出現在畫面中時先執行此方法。

onResume()
執行完onStart方法後,再自動執行本方法。完成後即在畫面中與使用者互動。

暫停階段

當使用者按下返回鍵,或是程式中將Fragment自某個Activity中移除時,會自動執行以下方法:

onPause()
進入暫停前第一個執行的方法。

onStop()
執行完onPause方法後,自動執行本方法。

onDestroyView()
此時Fragment已不在畫面中,呼叫此方法。

onDestroy()
當Fragment要被清除之前,會執行此方法。

onDetach()
與當初被加入的Activity卸載時,會自動執行此方法。

實作Fragment

完成如下圖所示之練習,頁面上方為兩個按鈕,下方為一個 FrameLayout,點擊按鈕後將 FrameLayout 中的內容置換為目標子頁面。






layout\activity_main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     tools:context=".MainActivity"
  6.     android:orientation="vertical">

  7.     <LinearLayout
  8.         android:orientation="horizontal"
  9.         android:layout_width="match_parent"
  10.         android:layout_height="wrap_content"
  11.         android:layout_gravity="center_horizontal">

  12.         <Button
  13.             android:layout_width="fill_parent"
  14.             android:layout_height="wrap_content"
  15.             android:text="Fragment1"
  16.             android:id="@+id/button1"
  17.             android:textAllCaps="false"
  18.             android:textSize="20sp"
  19.             android:layout_weight="1" />

  20.         <Button
  21.             android:layout_width="fill_parent"
  22.             android:layout_height="wrap_content"
  23.             android:text="Fragment2"
  24.             android:id="@+id/button2"
  25.             android:layout_gravity="center_horizontal"
  26.             android:textAllCaps="false"
  27.             android:textSize="20sp"
  28.             android:layout_weight="1" />
  29.     </LinearLayout>

  30.     <FrameLayout
  31.         android:layout_width="fill_parent"
  32.         android:layout_height="0dp"
  33.         android:layout_weight="1"
  34.         android:id="@+id/frame"
  35.         android:visibility="visible"></FrameLayout>
  36. </LinearLayout>
複製代碼
layout\fragment1.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:background="#c0e6ff">

  6.     <TextView
  7.         android:layout_width="match_parent"
  8.         android:layout_height="match_parent"
  9.         android:text="This is Fragment1"
  10.         android:id="@+id/textView"
  11.         android:layout_gravity="center_horizontal"
  12.         android:gravity="center"
  13.         android:textSize="28sp"
  14.         android:textColor="@android:color/black"
  15.         android:background="#c8e9ff"
  16.         android:visibility="visible" />
  17. </LinearLayout>
複製代碼
layout\fragment2.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:background="#ffc7c7">

  6.     <TextView
  7.         android:layout_width="match_parent"
  8.         android:layout_height="match_parent"
  9.         android:text="This is Fragment2"
  10.         android:id="@+id/textView"
  11.         android:layout_gravity="center_horizontal"
  12.         android:gravity="center"
  13.         android:textSize="28sp"
  14.         android:textColor="@android:color/black"
  15.         android:background="#f7d1ff"
  16.         android:visibility="visible" />
  17. </LinearLayout>
複製代碼
MainActivity.java
  1. package org.istak.ch38_fragment;

  2. import android.app.FragmentTransaction;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;

  7. public class MainActivity extends AppCompatActivity {

  8.     Button btn1, btn2;

  9.     @Override
  10.     protected void onCreate(Bundle savedInstanceState) {
  11.         super.onCreate(savedInstanceState);
  12.         setContentView(R.layout.activity_main);

  13.         btn1 = (Button) findViewById(R.id.button1);
  14.         btn2 = (Button) findViewById(R.id.button2);

  15.         btn1.setOnClickListener(new View.OnClickListener() {
  16.             @Override
  17.             public void onClick(View v) {
  18.                 //FragmentManager fm = getFragmentManager();
  19.                 Fragment1 f1 = new Fragment1();
  20.                 FragmentTransaction ft = getFragmentManager().beginTransaction();
  21.                 ft.add(R.id.frame, f1);    //replace() 具同樣效果
  22.                 //ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);  //設轉場動畫 (無意義)
  23.                 ft.commit();
  24.             }
  25.         });
  26.         btn2.setOnClickListener(new View.OnClickListener() {
  27.             @Override
  28.             public void onClick(View v) {
  29.                 //Fragment2 f2 = new Fragment2();
  30.                 //FragmentTransaction ft = getFragmentManager().beginTransaction();
  31.                 //ft.add(R.id.frame_layout, f2);
  32.                 //ft.commit();
  33.                 getFragmentManager().beginTransaction().add(R.id.frame, new Fragment2()).commit();
  34.             }
  35.         });
  36.     }
  37. }
複製代碼
Fragment1.java
  1. package org.istak.ch38_fragment;

  2. import android.app.Fragment;
  3. import android.os.Bundle;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;

  7. /**
  8. * Created by Tony on 2017/11/14.
  9. */
  10. public class Fragment1 extends Fragment {

  11.     @Override
  12.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  13.         View v=inflater.inflate(R.layout.fragment1,container,false);
  14.         return v;
  15.     }
  16. }
複製代碼
Fragment2.java
  1. package org.istak.ch38_fragment;

  2. import android.app.Fragment;
  3. import android.os.Bundle;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;

  7. /**
  8. * Created by Tony on 2017/11/14.
  9. */
  10. public class Fragment2 extends Fragment {

  11.     @Override
  12.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  13.         View v=inflater.inflate(R.layout.fragment2,container,false);
  14.         return v;
  15.     }
  16. }
複製代碼

作者: 陳泓瑜    時間: 2019-8-9 15:28

FRAGMAIN.JAVA
  1. package com.brixpert.dab.fragment;

  2. import android.app.Fragment;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;

  7. public class FRAGMAIN extends AppCompatActivity {

  8.     Button button;
  9.     Button button2;
  10.     @Override
  11.     protected void onCreate(Bundle savedInstanceState) {
  12.         super.onCreate(savedInstanceState);
  13.         setContentView(R.layout.activity_fragmain);
  14.         button = (Button) findViewById(R.id.button);
  15.         button2 = (Button) findViewById(R.id.button2);
  16.         button.setOnClickListener(new View.OnClickListener() {
  17.             @Override
  18.             public void onClick(View v) {
  19.                 getFragmentManager().beginTransaction().add(R.id.frame, new FRAG1()).commit();
  20.             }
  21.         });
  22.         button2.setOnClickListener(new View.OnClickListener() {
  23.             @Override
  24.             public void onClick(View v) {
  25.                 getFragmentManager().beginTransaction().add(R.id.frame, new FRAG2()).commit();
  26.             }
  27.         });
  28.     }
  29. }
複製代碼
FRAG1.JAVA
  1. package com.brixpert.dab.fragment;


  2. import android.os.Bundle;
  3. import android.app.Fragment;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;


  7. /**
  8. * A simple {@link Fragment} subclass.
  9. */
  10. public class FRAG1 extends Fragment {


  11.     public FRAG1() {
  12.         // Required empty public constructor
  13.     }


  14.     @Override
  15.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  16.                              Bundle savedInstanceState) {
  17.         // Inflate the layout for this fragment
  18.         return inflater.inflate(R.layout.fragment_frag1, container, false);
  19.     }


  20. }
複製代碼
FRAG2.JAVA
  1. package com.brixpert.dab.fragment;


  2. import android.os.Bundle;
  3. import android.app.Fragment;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;


  7. /**
  8. * A simple {@link Fragment} subclass.
  9. */
  10. public class FRAG2 extends Fragment {


  11.     public FRAG2() {
  12.         // Required empty public constructor
  13.     }


  14.     @Override
  15.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  16.                              Bundle savedInstanceState) {
  17.         // Inflate the layout for this fragment
  18.         return inflater.inflate(R.layout.fragment_frag2, container, false);
  19.     }


  20. }
複製代碼

作者: 張健勳    時間: 2019-8-17 16:25

  1. package com.example.student.myapplication;

  2. import android.app.FragmentTransaction;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;

  7. public class MainActivity extends AppCompatActivity {

  8.     Button button1 , button2;

  9.     @Override
  10.     protected void onCreate(Bundle savedInstanceState) {
  11.         super.onCreate(savedInstanceState);
  12.         setContentView(R.layout.activity_main);

  13.         button1 = (Button)findViewById(R.id.button1);
  14.         button2 = (Button)findViewById(R.id.button2);

  15.         button1.setOnClickListener(new View.OnClickListener() {
  16.             @Override
  17.             public void onClick(View v) {

  18.                 Fragment1 fragment1 = new Fragment1();
  19.                 FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
  20.                 fragmentTransaction.add(R.id.frame,fragment1);
  21.                 fragmentTransaction.commit();
  22.             }
  23.         });


  24.         button2.setOnClickListener(new View.OnClickListener() {
  25.             @Override
  26.             public void onClick(View v) {
  27.                 getFragmentManager().beginTransaction().add(R.id.frame, new Fragment2()).commit();
  28.             }
  29.         });
  30.     }
  31. }
複製代碼
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     tools:context=".MainActivity"
  6.     android:orientation="vertical">

  7.     <LinearLayout
  8.         android:orientation="horizontal"
  9.         android:layout_width="match_parent"
  10.         android:layout_height="wrap_content"
  11.         android:layout_gravity="center_horizontal">

  12.         <Button
  13.             android:layout_width="fill_parent"
  14.             android:layout_height="wrap_content"
  15.             android:text="Fragment1"
  16.             android:id="@+id/button1"
  17.             android:textAllCaps="false"
  18.             android:textSize="20sp"
  19.             android:layout_weight="1" />

  20.         <Button
  21.             android:layout_width="fill_parent"
  22.             android:layout_height="wrap_content"
  23.             android:text="Fragment2"
  24.             android:id="@+id/button2"
  25.             android:layout_gravity="center_horizontal"
  26.             android:textAllCaps="false"
  27.             android:textSize="20sp"
  28.             android:layout_weight="1" />
  29.     </LinearLayout>

  30.     <FrameLayout
  31.         android:layout_width="fill_parent"
  32.         android:layout_height="0dp"
  33.         android:layout_weight="1"
  34.         android:id="@+id/frame"
  35.         android:visibility="visible"></FrameLayout>
  36. </LinearLayout>
複製代碼
  1. package com.example.student.myapplication;


  2. import android.os.Bundle;
  3. import android.app.Fragment;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;


  7. /**
  8. * A simple {@link Fragment} subclass.
  9. */
  10. public class Fragment1 extends Fragment {


  11.     public Fragment1() {
  12.         // Required empty public constructor
  13.     }


  14.     @Override
  15.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  16.                              Bundle savedInstanceState) {
  17.         // Inflate the layout for this fragment
  18.         return inflater.inflate(R.layout.fragment1, container, false);
  19.     }


  20. }
複製代碼
  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  3.     android:layout_height="match_parent"
  4.     tools:context="com.example.student.myapplication.Fragment1"
  5.     android:background="#b7fbeb">

  6.     <!-- TODO: Update blank fragment layout -->
  7.     <TextView android:layout_width="match_parent" android:layout_height="match_parent"
  8.         android:text="Fragment 1"
  9.         android:textSize="28dp"
  10.         android:gravity="center"
  11.         android:textColor="#000000" />

  12. </FrameLayout>
複製代碼
  1. package com.example.student.myapplication;


  2. import android.os.Bundle;
  3. import android.app.Fragment;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;


  7. /**
  8. * A simple {@link Fragment} subclass.
  9. */
  10. public class Fragment2 extends Fragment {


  11.     public Fragment2() {
  12.         // Required empty public constructor
  13.     }


  14.     @Override
  15.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  16.                              Bundle savedInstanceState) {
  17.         // Inflate the layout for this fragment
  18.         return inflater.inflate(R.layout.fragment2, container, false);
  19.     }


  20. }
複製代碼
  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  3.     android:layout_height="match_parent"
  4.     tools:context="com.example.student.myapplication.Fragment2"
  5.     android:background="#ffc0c1">

  6.     <!-- TODO: Update blank fragment layout -->
  7.     <TextView android:layout_width="match_parent" android:layout_height="match_parent"
  8.         android:text="Fragment 2"
  9.         android:textSize="28dp"
  10.         android:textColor="#000000"
  11.         android:gravity="center" />

  12. </FrameLayout>
複製代碼

作者: 李知易    時間: 2019-8-17 16:56

Main:
  1. package com.example.student.myapplication;
  2. import android.app.FragmentTransaction;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;

  7. public class MainActivity extends AppCompatActivity {

  8.     Button button1, button2;

  9.     @Override
  10.     protected void onCreate(Bundle savedInstanceState) {
  11.         super.onCreate(savedInstanceState);
  12.         setContentView(R.layout.activity_main);

  13.         button1 = (Button) findViewById(R.id.button1);
  14.         button2 = (Button) findViewById(R.id.button2);

  15.         button1.setOnClickListener(new View.OnClickListener() {
  16.             @Override
  17.             public void onClick(View v) {
  18.                 Fragment1 f1 = new Fragment1();
  19.                 FragmentTransaction ft = getFragmentManager().beginTransaction();
  20.                 ft.add(R.id.frame, f1);
  21.                 ft.commit();
  22.             }
  23.         });
  24.         button2.setOnClickListener(new View.OnClickListener() {
  25.             @Override
  26.             public void onClick(View v) {
  27.                 Fragment2 f2 = new Fragment2();
  28.                 FragmentTransaction ft = getFragmentManager().beginTransaction();
  29.                 ft.add(R.id.frame, f2);
  30.                 ft.commit();
  31.             }
  32.         });
  33.     }
  34. }
複製代碼
Fragment1:
  1. package com.example.student.myapplication;


  2. import android.os.Bundle;
  3. import android.app.Fragment;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;

  7. public class Fragment1 extends Fragment {
  8.     public Fragment1() {
  9.     }
  10.     @Override
  11.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  12.                              Bundle savedInstanceState) {
  13.         // Inflate the layout for this fragment
  14.         return inflater.inflate(R.layout.fragment1, container, false);
  15.     }
  16. }
複製代碼
Fragment2:
  1. package com.example.student.myapplication;

  2. import android.app.Fragment;
  3. import android.os.Bundle;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;

  7. public class Fragment2 extends Fragment {
  8.     public Fragment2(){

  9.     }
  10.     @Override
  11.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  12.         return inflater.inflate(R.layout.fragment2,container,false);
  13.     }
  14. }
複製代碼
Fragment1_layout:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:background="#c0e6ff">

  6.     <TextView
  7.         android:layout_width="match_parent"
  8.         android:layout_height="match_parent"
  9.         android:text="Fragment1"
  10.         android:id="@+id/textView"
  11.         android:layout_gravity="center_horizontal"
  12.         android:gravity="center"
  13.         android:textSize="28sp"
  14.         android:textColor="@android:color/black"
  15.         android:background="#e12a45f"
  16.         android:visibility="visible" />
  17. </LinearLayout>
複製代碼
fragment2_layout:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:background="#ffc7c7">

  6.     <TextView
  7.         android:layout_width="match_parent"
  8.         android:layout_height="match_parent"
  9.         android:text="Fragment2"
  10.         android:id="@+id/textView"
  11.         android:layout_gravity="center_horizontal"
  12.         android:gravity="center"
  13.         android:textSize="28sp"
  14.         android:textColor="@android:color/black"
  15.         android:background="#edc7f5"
  16.         android:visibility="visible" />
  17. </LinearLayout>
複製代碼
main_layout:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     tools:context=".MainActivity"
  6.     android:orientation="vertical">

  7.     <LinearLayout
  8.         android:orientation="horizontal"
  9.         android:layout_width="match_parent"
  10.         android:layout_height="wrap_content"
  11.         android:layout_gravity="center_horizontal">

  12.         <Button
  13.             android:layout_width="185dp"
  14.             android:layout_height="59dp"
  15.             android:text="Fragment1"
  16.             android:id="@+id/button1"
  17.             android:textAllCaps="false"
  18.             android:textSize="20sp" />

  19.         <Button
  20.             android:layout_width="fill_parent"
  21.             android:layout_height="match_parent"
  22.             android:text="Fragment2"
  23.             android:id="@+id/button2"
  24.             android:layout_gravity="center_horizontal"
  25.             android:textAllCaps="false"
  26.             android:textSize="20sp" />
  27.     </LinearLayout>

  28.     <FrameLayout
  29.         android:layout_width="fill_parent"
  30.         android:layout_height="0dp"
  31.         android:layout_weight="0.95"
  32.         android:id="@+id/frame"
  33.         android:visibility="visible"></FrameLayout>
  34. </LinearLayout>
複製代碼

作者: 黃璽安    時間: 2019-8-22 14:18

  1. package com.example.shain.fragment;

  2. import android.app.FragmentTransaction;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;

  7. public class MainActivity extends AppCompatActivity {

  8.     Button btn1, btn2;

  9.     @Override
  10.     protected void onCreate(Bundle savedInstanceState) {
  11.         super.onCreate(savedInstanceState);
  12.         setContentView(R.layout.activity_main);

  13.         btn1 = (Button) findViewById(R.id.button1);
  14.         btn2 = (Button) findViewById(R.id.button2);

  15.         btn1.setOnClickListener(new View.OnClickListener() {
  16.             @Override
  17.             public void onClick(View v) {
  18.                 Fragment1 f1 = new Fragment1();
  19.                 FragmentTransaction ft = getFragmentManager().beginTransaction();
  20.                 ft.add(R.id.frame, f1);
  21.                 ft.commit();
  22.             }
  23.         });
  24.         btn2.setOnClickListener(new View.OnClickListener() {
  25.             @Override
  26.             public void onClick(View v) {
  27.                 Fragment2 f2 = new Fragment2();
  28.                 FragmentTransaction ft = getFragmentManager().beginTransaction();
  29.                 ft.add(R.id.frame, f2);
  30.                 ft.commit();
  31.             }
  32.         });


  33.     }
  34. }
複製代碼
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  4.     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
  5.     android:paddingRight="@dimen/activity_horizontal_margin"
  6.     android:paddingTop="@dimen/activity_vertical_margin"
  7.     android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

  8.     <Button
  9.         android:layout_width="wrap_content"
  10.         android:layout_height="wrap_content"
  11.         android:text="Fragment1"
  12.         android:textSize="20sp"
  13.         android:id="@+id/button1"
  14.         android:layout_alignParentTop="true"
  15.         android:layout_alignParentLeft="true"
  16.         android:layout_alignParentStart="true" />
  17.     <Button
  18.         android:layout_width="wrap_content"
  19.         android:layout_height="wrap_content"
  20.         android:text="Fragment2"
  21.         android:textSize="20sp"
  22.         android:layout_alignParentRight="true"
  23.         android:layout_alignParentEnd="true"
  24.         android:id="@+id/button2" />

  25.     <FrameLayout
  26.         android:layout_width="match_parent"
  27.         android:layout_height="match_parent"
  28.         android:layout_alignRight="@+id/button2"
  29.         android:layout_alignEnd="@+id/button2"
  30.         android:layout_below="@+id/button1"
  31.         android:id="@+id/frame"></FrameLayout>

  32. </RelativeLayout>
  33. [code]
複製代碼
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context="com.example.shain.fragment.Fragment1"
    android:id="@+id/fragment1"
    android:background="#afe6ee">

    <!-- TODO: Update blank fragment layout -->

</FrameLayout>
  1. [/code]<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  3.     android:layout_height="match_parent" tools:context="com.example.shain.fragment.Fragment2"
  4.     android:id="@+id/fragment2"
  5.     android:background="#e3babc">

  6.     <!-- TODO: Update blank fragment layout -->

  7. </FrameLayout>
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2