一.布局
二.代码
1.先写布局文件
主界面的布局文件 主要是分两部分:上面是一个实现Fragment中的内容,下面是RadioGroup
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#006644" >
<RadioGroup
android:id="@+id/rg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/rb_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:checked="true"
android:drawableTop="@android:drawable/btn_star"
android:gravity="center"
android:text="消息" />
<RadioButton
android:id="@+id/rb_contact"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@android:drawable/btn_star"
android:gravity="center"
android:text="联系人" />
<RadioButton
android:id="@+id/rb_dynamic"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@android:drawable/btn_star"
android:gravity="center"
android:text="动态" />
<RadioButton
android:id="@+id/rb_setting"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@android:drawable/btn_star"
android:gravity="center"
android:text="设置" />
</RadioGroup>
</LinearLayout>
<FrameLayout
android:id="@+id/fl_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/ll" >
</FrameLayout>
</RelativeLayout>四个Fragment中的布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@android:drawable/btn_star" />
<TextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="10dp"
android:textSize="20sp" />
</LinearLayout>
</RelativeLayout>写四个Fragment来加载对应的布局
package com.example.fragment;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment_Contact extends Fragment {
private TextView tv_content;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, null);
tv_content = (TextView) view.findViewById(R.id.tv_content);
tv_content.setText("联系人");
return view;
}
}
package com.example.fragment;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment_Dynamic extends Fragment {
private TextView tv_content;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, null);
tv_content = (TextView) view.findViewById(R.id.tv_content);
tv_content.setText("动态");
return view;
}
}
package com.example.fragment;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment_message extends Fragment {
private TextView tv_content;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, null);
tv_content = (TextView) view.findViewById(R.id.tv_content);
tv_content.setText("消息");
return view;
}
}
package com.example.fragment;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment_Setting extends Fragment {
private TextView tv_content;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, null);
tv_content = (TextView) view.findViewById(R.id.tv_content);
tv_content.setText("设置");
return view;
}
}
package com.example.fragment;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.widget.FrameLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class MainActivity extends Activity {
protected static final String TAG = "MainActivity";
private RadioGroup rg;
private RadioButton rb_message;
private RadioButton rb_contact;
private RadioButton rb_dynamic;
private RadioButton rb_setting;
private FrameLayout fl_content;
private Fragment_message fragment_message;
private Fragment_Contact fragment_contact;
private Fragment_Dynamic fragment_dynamic;
private Fragment_Setting fragment_setting;
private FragmentManager fragmentManager; // 管理Fragment
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
init();
// 得到一个Fragment的管理者
fragmentManager = getFragmentManager();
// 开启一个Fragment事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
fragment_message = new Fragment_message();
transaction.add(R.id.fl_content, fragment_message);
transaction.commit();
Log.i(TAG, "消息的Fragment创建成功");
// RadioGroup的点击事件
rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
// transaction = fragmentManager.beginTransaction();
// hideFragments(transaction);
@Override
public void onCheckedChanged(RadioGroup arg0, int arg1) {
// 开启一个Fragment事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
hideFragments(transaction);
if (arg1 == rb_message.getId()) {
if (fragment_message == null) {
fragment_message = new Fragment_message();
transaction.add(R.id.fl_content, fragment_message);
} else {
transaction.show(fragment_message);
}
Log.i(TAG, "选中了消息的按钮");
} else if (arg1 == rb_contact.getId()) {
if (fragment_contact == null) {
fragment_contact = new Fragment_Contact();
transaction.add(R.id.fl_content, fragment_contact);
} else {
transaction.show(fragment_contact);
}
Log.i(TAG, "选中了联系人的按钮");
} else if (arg1 == rb_dynamic.getId()) {
if (fragment_dynamic == null) {
fragment_dynamic = new Fragment_Dynamic();
transaction.add(R.id.fl_content, fragment_dynamic);
} else {
transaction.show(fragment_dynamic);
}
Log.i(TAG, "选中了动态的按钮");
} else if (arg1 == rb_setting.getId()) {
if (fragment_setting == null) {
fragment_setting = new Fragment_Setting();
transaction.add(R.id.fl_content, fragment_setting);
} else {
transaction.show(fragment_setting);
}
Log.i(TAG, "选中了设置的按钮");
}
transaction.commit();
}
});
}
/**
* 控件的实例化
*/
private void init() {
rg = (RadioGroup) findViewById(R.id.rg);
rb_message = (RadioButton) findViewById(R.id.rb_message);
rb_contact = (RadioButton) findViewById(R.id.rb_contact);
rb_dynamic = (RadioButton) findViewById(R.id.rb_dynamic);
rb_setting = (RadioButton) findViewById(R.id.rb_setting);
fl_content = (FrameLayout) findViewById(R.id.fl_content);
}
/**
* 将所有的Fragment都置为隐藏状态。
*
* @param transaction
* 用于对Fragment执行操作的事务
*/
private void hideFragments(FragmentTransaction transaction) {
if (fragment_message != null) {
transaction.hide(fragment_message);
}
if (fragment_contact != null) {
transaction.hide(fragment_contact);
}
if (fragment_dynamic != null) {
transaction.hide(fragment_dynamic);
}
if (fragment_setting != null) {
transaction.hide(fragment_setting);
}
}
}
本文介绍了如何在Android应用中使用Fragment实现Tab功能。主要分为两个步骤:一是设计布局,包括主界面的布局,主要由一个Fragment显示内容和RadioGroup组成;二是编写代码,特别是Fragment布局文件的创建。
961

被折叠的 条评论
为什么被折叠?



