首先对下半部分Fragment进行布局,使其正常显示,例如:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/fragment_2" android:scaleType="fitXY" /> </LinearLayout>
加载布局页面,例如:
public class Fragment2 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_2,null); //加载布局页面 } }
然后设置ActionBar为选项卡模式,并将标签页添加到ActionBar中,代码如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getSupportActionBar(); //actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //设置ActionBar为选项卡模式 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); //隐藏标题栏 actionBar.addTab(actionBar.newTab().setText("词典"). //将标签页添加ActionBar中 setTabListener(new MyTabListener(this, Fragment1.class))); actionBar.addTab(actionBar.newTab().setText("百科"). //将标签页添加ActionBar中 setTabListener(new MyTabListener(this, Fragment2.class))); actionBar.addTab(actionBar.newTab().setText("翻译").////将标签页添加ActionBar中 setTabListener(new MyTabListener(this, Fragment3.class))); actionBar.addTab(actionBar.newTab().setText("发现").//将标签页添加ActionBar中 setTabListener(new MyTabListener(this, Fragment4.class))); actionBar.addTab(actionBar.newTab().setText("我的").//将标签页添加ActionBar中 setTabListener(new MyTabListener(this, Fragment5.class))); }
其中导的包为:
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.ActionBar;
import android.os.Bundle;
在MyTabListener.java中完成切换页面的动作,代码如下:
import android.app.Activity; import androidx.appcompat.app.ActionBar; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; public class MyTabListener implements ActionBar.TabListener{ private Fragment fragment; //定义Fragment private final Activity activity; //定义Activity private final Class aClass; //定义Class public MyTabListener(Activity activity, Class aClass) { //添加构造函数 this.activity = activity; this.aClass = aClass; } @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { //判断碎片是否初始化 if (fragment == null) { //如果没有初始化,将其初始化 fragment = Fragment.instantiate(activity, aClass.getName()); ft.add(android.R.id.content, fragment, null); } ft.attach(fragment); //显示新画面 } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { if (fragment != null) { ft.detach(fragment); //删除旧画面 } } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { } }
同样注意导包!!