阳光天下

学无止境-与大家共同进步
随笔 - 25, 文章 - 0, 评论 - 140, 阅读 - 25万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Android选项卡TabHost方式实现

Posted on   阳光天下  阅读(3023)  评论(0编辑  收藏  举报

1.布局XML:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@android:id/tabhost">
    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView 
            android:id="@+id/bottomtip"
            android:layout_width="match_parent"
            android:layout_height="50dp"            
            android:text="@string/funPageBtn2" 
            android:gravity="center_horizontal|center_vertical" 
            android:layout_alignParentTop="true"
            android:textColor="@android:color/white"
            android:background="@android:color/black" 
        />
        <FrameLayout 
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@android:id/tabs"
            android:layout_below="@+id/bottomtip"
        />
        <TabWidget 
            android:id="@android:id/tabs"   
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@android:color/black" 
        />        
    </RelativeLayout>

</TabHost>
复制代码

布局效果理解:

 

2.Activity类实现

复制代码
package com.test.appdemo1.actlearn;

import com.test.appdemo1.R;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

@SuppressWarnings("deprecation")
public class TabOptTopAct extends TabActivity {

    private TabHost tabHost;    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabtoplayout);
        initTab();
    }

    private void initTab() {
        tabHost = getTabHost();
        TabSpec tabSpec = null;
        Intent  intent = new Intent(this,MainActivity.class);
        //第一个        
        tabSpec = tabHost.newTabSpec("tab1")
                .setIndicator("首页",getResources().getDrawable(R.drawable.home))
                .setContent(intent);
        tabHost.addTab(tabSpec);
        
        //第二个        
        intent = new Intent(this,NextActivity.class);
        tabSpec = tabHost.newTabSpec("tab2")
                .setIndicator("邮件",getResources().getDrawable(R.drawable.mail))
                .setContent(intent);
        tabHost.addTab(tabSpec);
        
        //第三个    
        intent = new Intent(this,ServiceActDemo.class);
        tabSpec = tabHost.newTabSpec("tab3")
                .setIndicator("音乐",getResources().getDrawable(R.drawable.music))
                .setContent(intent);
        tabHost.addTab(tabSpec);
        
        //第四个    
        intent = new Intent(this,FrameLearnLayoutAct.class);
        tabSpec = tabHost.newTabSpec("tab4")
                .setIndicator("计算",getResources().getDrawable(R.drawable.calc))
                .setContent(intent);
        tabHost.addTab(tabSpec);
        
        tabHost.setCurrentTab(1);
    }
    
    public void onBackPressed() {
        super.onBackPressed();
        finish();
    }
}
复制代码

最后说明:如果想把选项卡放到顶部只需修改布局文件中RelativeLayout里面的三个元素的位置

若有问题请大家指正.

程序运行效果如上图片所示.

 

 

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示