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; } }