Tab与TabHost的使用
package com.chaowen;
import android.app.TabActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.widget.TabHost;
import android.widget.Toast;
import android.widget.TabHost.OnTabChangeListener;
publicclass MyTab extends TabActivity{
private TabHost myTabHost;
protectedint myMenuSettingTag=0;
protected Menu myMenu;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myTabHost =this.getTabHost();//从TabActivity上面获取放置Tab的TabHost
LayoutInflater.from(this).inflate(R.layout.main, myTabHost.getTabContentView(),true);
//from(this)从这个TabActivity获取LayoutInflater
//R.layout.main存放Tab布局
//通过TabHost获得存放Tab标签页内容的FrameLayout
//是否将inflate拴系到根布局元素上
myTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));
//设置一下TabHost的颜色
myTabHost.addTab(myTabHost.newTabSpec("AA") //标签一
//显示的标题为谢霆锋,如果不想显示出来,就设为空
.setIndicator("谢霆锋",getResources().getDrawable(R.drawable.tab))
.setContent(R.id.layout1));
myTabHost.addTab(myTabHost.newTabSpec("BB")
.setIndicator("李俊基",getResources().getDrawable(R.drawable.tab2))
.setContent(R.id.layout2));
myTabHost.addTab(myTabHost.newTabSpec("CC")
.setIndicator("炎亚纶",getResources().getDrawable(R.drawable.tab3))
.setContent(R.id.layout3));
//标签切换事件
myTabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
publicvoid onTabChanged(String tabString) {
if(tabString.equals("AA")){
myMenuSettingTag =1;
}
if(tabString.equals("BB")){
myMenuSettingTag =2;
}
if(tabString.equals("CC")){
myMenuSettingTag =3;
}
if (myMenu !=null) {
onCreateOptionsMenu(myMenu);
}
}
});
}
@Override
publicboolean onCreateOptionsMenu(Menu menu) {
myMenu=menu;
myMenu.clear();
switch (myMenuSettingTag) {
case1:
Toast.makeText(this, "谢霆锋", Toast.LENGTH_SHORT).show();
break;
case2:
Toast.makeText(this, "李俊基", Toast.LENGTH_SHORT).show();
break;
case3:
Toast.makeText(this, "炎亚纶", Toast.LENGTH_SHORT).show();
break;
}
returnsuper.onCreateOptionsMenu(menu);
}
}
import android.app.TabActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.widget.TabHost;
import android.widget.Toast;
import android.widget.TabHost.OnTabChangeListener;
publicclass MyTab extends TabActivity{
private TabHost myTabHost;
protectedint myMenuSettingTag=0;
protected Menu myMenu;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myTabHost =this.getTabHost();//从TabActivity上面获取放置Tab的TabHost
LayoutInflater.from(this).inflate(R.layout.main, myTabHost.getTabContentView(),true);
//from(this)从这个TabActivity获取LayoutInflater
//R.layout.main存放Tab布局
//通过TabHost获得存放Tab标签页内容的FrameLayout
//是否将inflate拴系到根布局元素上
myTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));
//设置一下TabHost的颜色
myTabHost.addTab(myTabHost.newTabSpec("AA") //标签一
//显示的标题为谢霆锋,如果不想显示出来,就设为空
.setIndicator("谢霆锋",getResources().getDrawable(R.drawable.tab))
.setContent(R.id.layout1));
myTabHost.addTab(myTabHost.newTabSpec("BB")
.setIndicator("李俊基",getResources().getDrawable(R.drawable.tab2))
.setContent(R.id.layout2));
myTabHost.addTab(myTabHost.newTabSpec("CC")
.setIndicator("炎亚纶",getResources().getDrawable(R.drawable.tab3))
.setContent(R.id.layout3));
//标签切换事件
myTabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
publicvoid onTabChanged(String tabString) {
if(tabString.equals("AA")){
myMenuSettingTag =1;
}
if(tabString.equals("BB")){
myMenuSettingTag =2;
}
if(tabString.equals("CC")){
myMenuSettingTag =3;
}
if (myMenu !=null) {
onCreateOptionsMenu(myMenu);
}
}
});
}
@Override
publicboolean onCreateOptionsMenu(Menu menu) {
myMenu=menu;
myMenu.clear();
switch (myMenuSettingTag) {
case1:
Toast.makeText(this, "谢霆锋", Toast.LENGTH_SHORT).show();
break;
case2:
Toast.makeText(this, "李俊基", Toast.LENGTH_SHORT).show();
break;
case3:
Toast.makeText(this, "炎亚纶", Toast.LENGTH_SHORT).show();
break;
}
returnsuper.onCreateOptionsMenu(menu);
}
}
布局main.xml
<?xml version= "1.0" encoding= "utf-8" ?> <FrameLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= "fill_parent" android:layout_height= "fill_parent" > <!-- 第一个Tab对应的布局 --> <LinearLayout android:id= "@+id/layout1" android:layout_height= "fill_parent" android:layout_width= "fill_parent" android:orientation= "vertical" > <ImageView android:id= "@+id/Image01" android:layout_height= "fill_parent" android:layout_width= "wrap_content" android:src= "@drawable/i1" /> </LinearLayout> <!-- 第二个Tab对应的布局 --> <LinearLayout android:id= "@+id/layout2" android:layout_height= "fill_parent" android:layout_width= "fill_parent" android:orientation= "vertical" > <ImageView android:id= "@+id/Image02" android:layout_height= "fill_parent" android:layout_width= "wrap_content" android:src= "@drawable/i2" /> </LinearLayout> <!-- 第三个Tab对应的布局 --> <LinearLayout android:id= "@+id/layout3" android:layout_height= "fill_parent" android:layout_width= "fill_parent" android:orientation= "vertical" > <ImageView android:id= "@+id/Image03" android:layout_height= "fill_parent" android:layout_width= "wrap_content" android:src= "@drawable/i3" /> </LinearLayout> </FrameLayout> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述