Android(安卓)中的TabHost控件的使用
16lz
2021-01-24
介绍
有时,我们想在一个window中显示多个视图,这时就需要用到Tab容器。在Android里它叫TabHost。
使用TabHost有两种方式:
- 在相同的activity中使用TabHost导航多个视图
- 使用TabHost导航多个Activity(通过intents)
1 layout 文件 main.xml 代码:
<?xml version="1.0" encoding="utf-8"?>
2Activity代码
import android.app.TabActivity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.widget.AnalogClock;import android.widget.TabHost;import android.widget.TabHost.TabSpec;import android.widget.TextView; public class MainActivity1 extends TabActivity {@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tabHost=(TabHost)findViewById(android.R.id.tabhost); tabHost.setup(); // 如果使用TabAcitivity 作为你的Activity 的基类, // 你不用调用Tabost.Setup方法 TabSpec spec1=tabHost.newTabSpec("Tab 1"); spec1.setContent(R.id.tab1); spec1.setIndicator("Tab 1"); TabSpec spec2=tabHost.newTabSpec("Tab 2"); spec2.setIndicator("Tab 2"); spec2.setContent(R.id.tab2); TabSpec spec3=tabHost.newTabSpec("Tab 3"); spec3.setIndicator("Tab 3"); spec3.setContent(R.id.tab3); tabHost.addTab(spec1); tabHost.addTab(spec2); tabHost.addTab(spec3); } }
效果:
- 这里通过TabSpecs类创建Tab
- 使用setIndicator方法设置tab的文字
- 使用setContent设置tab的内容
- 如果你使用TabActivity作为你的Activity的基类,你不用调用TabHost.Setup()方法。
TabSpec spec1=tabHost.newTabSpec("Tab 1");spec1.setContent(R.id.tab1);TextView txt=new TextView(this);txt.setText("Tab 1");txt.setBackgroundColor(Color.RED);spec1.setIndicator(txt);
设置tab的内容 上面的例子展示了使用tab显示不同的layout资源。如果我们需要通过tab导航到不同的Activity,该怎么办? 这种情况,我们需要有一个activity作为应用的根activity。这个Activity包含TabHost,通过intents导航不同的activity。 注意:根Activity必须继承TabActivity。代码如下: Layout:
<?xml version="1.0" encoding="utf-8"?>
Activity:
public class TabDemo extends TabActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tabHost=getTabHost(); // no need to call TabHost.Setup() //First Tab TabSpec spec1=tabHost.newTabSpec("Tab 1"); spec1.setIndicator("Tab 1",getResources().getDrawable(R.drawable.sun)); Intent in1=new Intent(this, Act1.class); spec1.setContent(in1); TabSpec spec2=tabHost.newTabSpec("Tab 2"); spec2.setIndicator("Tab 2",getResources().getDrawable(R.drawable.chart)); Intent in2=new Intent(this,Act2.class); spec2.setContent(in2); tabHost.addTab(spec2); tabHost.addTab(spec3); }}
以上的会发生运行错误,可能是在我写的时候,android版本更新了。所以旧代码运行起来有问题。有知道原因的朋友可以留言。
在运行时添加Tab 在运行时我们可以通过调用TabSepc.setContent(TabContentFactory)方法添加Tab。
import android.app.TabActivity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.widget.AnalogClock;import android.widget.TabHost;import android.widget.TabHost.TabSpec;import android.widget.TextView; public class MainTabActivity extends TabActivity {@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tabHost=(TabHost)findViewById(android.R.id.tabhost); tabHost.setup(); // 如果使用TabAcitivity 作为你的Activity 的基类, // 你不用调用Tabost.Setup方法 // TabSpec spec1=tabHost.newTabSpec("Tab 1"); // spec1.setContent(R.id.tab1); // spec1.setIndicator("Tab 1"); // TabSpec spec1=tabHost.newTabSpec("Tab 1"); spec1.setContent(R.id.tab1); TextView txt=new TextView(this); txt.setText("Tab 1 in a View L"); txt.setBackgroundColor(Color.RED); spec1.setIndicator(txt); TabSpec spec2=tabHost.newTabSpec("Tab 2"); spec2.setIndicator("Tab 2"); // method 1 , setContent(int) spec2.setContent(R.id.tab2); // method 2 , setContent(Intent) // method 3 , setContent(TabHost.TabContentFactory)// spec2.setContent(new TabHost.TabContentFactory() {// public View createTabContent(String tag) { // return (new AnalogClock(MainTabActivity.this)); // } // }); TabSpec spec3=tabHost.newTabSpec("Tab 3"); spec3.setIndicator("Tab 3"); spec3.setContent(R.id.tab3); tabHost.addTab(spec1); tabHost.addTab(spec2); tabHost.addTab(spec3); } }
运行效果
原地址:http://blog.csdn.net/xinem/article/details/7083523
更多相关文章
- android中的search dialog
- 浅谈android的am命令
- 2011.07.20(2)——— android 计算当前坐标是否在view内
- Android软键盘弹出时的界面控制方法
- Android之实现滑动开关组件
- android Intent常见应用
- android编程语言如何实现一个简单的手机打电话应用程序
- Android仿ios年龄、生日、性别滚轮效果
- Handler: Service中使用Toast