Android入门之TabHost一(不用xml,纯java)

来源:互联网 发布:java中list的用法 编辑:程序博客网 时间:2024/05/16 23:58

import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.widget.FrameLayout;import android.widget.LinearLayout;import android.widget.TabHost;import android.widget.TabWidget;import android.widget.TextView;public class TabHostTestttActivity extends Activity {//Tab三要素TabHost tabHost=null;TabWidget tabWidget=null;FrameLayout fl=null;    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                //第一步,定义tabHost        tabHost=new TabHost(this);        LinearLayout.LayoutParams lp_tabHost=new LinearLayout.LayoutParams( -1,-1);        tabHost.setLayoutParams(lp_tabHost);                //第二步,定义tabWidget        tabWidget=new TabWidget(this);        tabWidget.setId(android.R.id.tabs);//注意ID的设置        tabWidget.setLayoutParams(new LinearLayout.LayoutParams(-1,-2));                //第三步,定义fl        fl=new FrameLayout(this);        fl.setId(android.R.id.tabcontent);//注意ID的设置        fl.setLayoutParams(new LinearLayout.LayoutParams(-1,-2));                TextView tv1=new TextView(this);        tv1.setId(55);        tv1.setTextColor(Color.BLACK);        tv1.setText("hello1");                TextView tv2=new TextView(this);        tv2.setId(66);        tv2.setTextColor(Color.WHITE);        tv2.setText("hello2");                fl.addView(tv1);        fl.addView(tv2);                //第四步        tabHost.addView(tabWidget);        tabHost.addView(fl);                //重点就在什么时候调用setup()函数,在这里就在这里        //必须有以上四步的基础,才能调用setup()        tabHost.setup();                //重点:此步骤只能在setup()之后进行        tabHost.addTab(tabHost.newTabSpec("tag1").setIndicator("indicator1").setContent(55));        tabHost.addTab(tabHost.newTabSpec("tag2").setIndicator("指示2",this.getResources().getDrawable(R.drawable.ic_launcher)).setContent(66));        /*         * 上一句程序等同如下:         *TabSpec ts=tabHost.newTabSpec("tag2");         *ts.setIndicator("指示2",this.getResources().getDrawable(R.drawable.ic_launcher));         *ts.setContent(66);         *tabHost.addTab(ts);         */                setContentView(tabHost);    }}

——————

 

——————

以上图示,有点选项卡的影子了,但是内容是现在是左上角,为什么呢?

因为tabhost本身就是framelayout的扩展,所以添加tabwidget和fl的内容都是默认在左上角重叠显示的,那么如何让tabwidget和fl分离呢?

办法就是在导入一个布局,可以是linearlayout或者relativelayout等,成为新的布局关系,以linearlayout为例,定义LinearLayout mainView

tabHost————mainView————(tabWidget、fl),见下篇


原创粉丝点击