android tabhost 用代码布局

介绍TabHost不用xml文件布局,而用代码布局的方法。

 

package com.example.testwhatever;

import java.util.ArrayList;
import java.util.List;

import android.R.attr;
import android.app.Activity;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TabHost.TabContentFactory;
import android.widget.TabHost.TabSpec;
import android.widget.TabWidget;

public class Tabhost1Activity extends Activity{
    private TabHost mTabHost;
    private TabWidget mTabWidget;
    private FrameLayout mFrameLayout;
    private LinearLayout mLinearLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                //构造函数第二个参数一定要传null,如果去掉第二个参数会报resourceNotFoundException
        mTabHost = new TabHost(this, null);
        mTabHost.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        
        mTabWidget = new TabWidget(this);
        mTabWidget.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
        mTabWidget.setId(android.R.id.tabs);//id必须设置为android.R.id.tabs
        
        mFrameLayout = new FrameLayout(this);
        mFrameLayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT ));
        mFrameLayout.setId(android.R.id.tabcontent);//id必须设置为android.R.id.tabcontent
        
        mLinearLayout = new LinearLayout(this);
        mLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        mLinearLayout.setOrientation(LinearLayout.VERTICAL);
        mLinearLayout.addView(mTabWidget);
        mLinearLayout.addView(mFrameLayout);
        
        mTabHost.addView(mLinearLayout);
        
        //以上步骤完成后才能调用setup
        mTabHost.setup();
        
        //调用setup();才能进行addTab
        mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("标签一").setContent(new TabContentFactory() {
            @Override
            public View createTabContent(String tag) {
                return initListView1();
            }
        }));
        
        mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("标签二").setContent(new TabContentFactory() {
            @Override
            public View createTabContent(String tag) {
                return initListView2();
            }
        }));
        setContentView(mTabHost);
        
    }
    
    private ListView initListView1(){
        ListView listView1 = new ListView(this);
        listView1.setId(55);
        listView1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        listView1.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_expandable_list_item_1,getData1()));
        return listView1;
    }
    
    private ListView initListView2(){
        ListView listView2 = new ListView(this);
        listView2.setId(66);
        listView2.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        listView2.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_expandable_list_item_1,getData2()));
        return listView2;
    }
    
    private List<String> getData1(){
        List<String> data = new ArrayList<String>();
        data.add("一标签数据1");
        data.add("一标签数据2");
        data.add("一标签数据3");
        data.add("一标签数据4");
        return data;
    }
    
    private List<String> getData2(){
        List<String> data = new ArrayList<String>();
        data.add("二标签数据1");
        data.add("二标签数据2");
        data.add("二标签数据3");
        data.add("二标签数据4");
        return data;
    }
    
}
  



 

 

posted @ 2016-03-14 16:51  月出皎兮  阅读(270)  评论(0编辑  收藏  举报