Tab Layout 之多个Activity实现

        上次说了可以用两种方法实现Tab Layout,之前写了单个Activity实现,现在来用多个Activity来实现,这篇文章是翻译的android develop网站上的文章!

         单个Activity实现就是在一个Activity里面切换显示内容,我们上次用的是三个TextView。这里我们用3个Activity实现,每次点击一个tab的时候,就打开一个新的Activity!我们创建一个tabbed UI,为每一个tab创建一个Activity!

      第一步:创建一个新的Android项目,命名为:HelloTabWidget。

      第二步:在项目中创建3个单独的Activity: ArtistsActivityAlbumsActivity, andSongsActivity. 在每一个Activity里面创建一个TextView来显示每个tab的内容!这里举一个例子,其他的两个类似:

public class ArtistsActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("This is the Artists tab");
        setContentView(textview);
    }
}

     把创建的3个Activity加入到  Android Manifest 文件中!

    第三步:我们为每个tab准备两个图片,一个是选中该tab时显示的图片,一个是没有选中该tab时显示的图片,如下所示:

    

    在项目中新建如下目录res/drawable/,在该目录下创建ic_tab_artists.xml文件,作用即是根据tab是否选中来设置显示的图标,文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/ic_tab_artists_grey"
          android:state_selected="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/ic_tab_artists_white" />
</selector>

   第四步:打开 res/layout/main.xml 文件,修改内容如下:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp" />
    </LinearLayout>
</TabHost>

   第五步:打开 HelloTabWidget.java 文件,继承自TabActivity:

   

public class HelloTabWidget extends TabActivity
   第六步:在oncreate()方法中添加如下代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, ArtistsActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                      res.getDrawable(R.drawable.ic_tab_artists))
                  .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, AlbumsActivity.class);
    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                      res.getDrawable(R.drawable.ic_tab_albums))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SongsActivity.class);
    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                      res.getDrawable(R.drawable.ic_tab_songs))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(2);
}

   上面的代码和单个Activity实现的代码基本一样,这里就不再逐行解释。

   第七步:打开Android Manifest file文件,添加 NoTitleBar主题到 HelloTabWidget's <activity>标签中,如下所示:

    

<activity android:name=".HelloTabWidget" android:label="@string/app_name"
          android:theme="@android:style/Theme.NoTitleBar">
   第八步:运行程序,截图如下:

   


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
FragmentTabHost和FragmentActivityAndroid开发中常用的两个类。FragmentTabHost用于实现Tab切换功能,FragmentActivity用于管理Fragment。下面是一个简单的示例,演示如何使用FragmentTabHost和FragmentActivity实现应用主界面: 1. 创建Activity,继承自FragmentActivity,并在布局文件中添加FragmentTabHost组件。 2. 在Activity的onCreate方法中,初始化FragmentTabHost,设置Tab的选项卡和内容。 3. 创建多个Fragment用于不同的Tab选项卡,每个Tab选项卡对应一个Fragment。 4. 在Fragment中实现对应Tab的内容。 下面是一个示例代码: MainActivity.java ``` public class MainActivity extends FragmentActivity { private FragmentTabHost mTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent); mTabHost.addTab(mTabHost.newTabSpec("home").setIndicator("Home"), HomeFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("search").setIndicator("Search"), SearchFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("settings").setIndicator("Settings"), SettingsFragment.class, null); } } ``` activity_main.xml ``` <android.support.v4.app.FragmentTabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </android.support.v4.app.FragmentTabHost> ``` HomeFragment.java ``` public class HomeFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home, container, false); // TODO: add your home fragment content here return view; } } ``` fragment_home.xml ``` <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Home Fragment" /> </RelativeLayout> ``` SearchFragment.java和SettingsFragment.java类似于HomeFragment,分别对应Search和Settings选项卡的内容。 这样,我们就可以通过FragmentTabHost和FragmentActivity实现应用主界面的Tab切换功能了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值