实现TabWidget选项卡按钮在屏幕下方

main.xml 
<?xml version="1.0" encoding="utf-8"?> 
<TabHost android:id="@+id/tabhost" xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <RelativeLayout android:orientation="vertical" 
        android:layout_width="fill_parent" android:layout_height="fill_parent"> 
        <TabWidget android:id="@android:id/tabs" 
            android:layout_width="fill_parent" android:layout_height="wrap_content" 
            android:layout_alignParentBottom="true" /> 
        <FrameLayout android:id="@android:id/tabcontent" 
            android:layout_width="fill_parent" android:layout_height="fill_parent"> 
            <LinearLayout android:id="@+id/tab1" 
                android:layout_width="fill_parent" android:layout_height="fill_parent" 
                androidrientation="vertical"> 
                <TextView android:id="@+id/view1" android:layout_width="wrap_content" 
                    android:layout_height="wrap_content" android:text="@string/textView_1" /> 
            </LinearLayout> 
            <LinearLayout android:id="@+id/tab2" 
                android:layout_width="fill_parent" android:layout_height="fill_parent" 
                androidrientation="vertical"> 
                <TextView android:id="@+id/view2" android:layout_width="wrap_content" 
                    android:layout_height="wrap_content" android:text="@string/textView_2" /> 
            </LinearLayout> 
            <LinearLayout android:id="@+id/tab3" 
                android:layout_width="fill_parent" android:layout_height="fill_parent" 
                androidrientation="vertical"> 
                <TextView android:id="@+id/view3" android:layout_width="wrap_content" 
                    android:layout_height="wrap_content" android:text="@string/textView_3" /> 
            </LinearLayout> 
            <LinearLayout android:id="@+id/tab4" 
                android:layout_width="fill_parent" android:layout_height="fill_parent" 
                androidrientation="vertical"> 
                <TextView android:id="@+id/view4" android:layout_width="wrap_content" 
                    android:layout_height="wrap_content" android:text="@string/textView_4" /> 
            </LinearLayout> 
        </FrameLayout> 
    </RelativeLayout> 
</TabHost> 

TabDemo1 
package com.focusmobi.TabDemo1; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TabHost; 

public class TabDemo1 extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle icicle) { 
        super.onCreate(icicle); 
        
        setContentView(R.layout.main); 
        setTitle("TabWidget Demo"); 
        
        TabHost tabs = (TabHost) findViewById(R.id.tabhost); 
        tabs.setup(); 
        
        TabHost.TabSpec spec = tabs.newTabSpec("tab1"); 
        spec.setContent(R.id.tab1); 
        spec.setIndicator("主页"); 
        tabs.addTab(spec); 
        
        spec = tabs.newTabSpec("tab2"); 
        spec.setContent(R.id.tab2); 
        spec.setIndicator("经济"); 
        tabs.addTab(spec); 
        
        spec = tabs.newTabSpec("tab3"); 
        spec.setContent(R.id.tab3); 
        spec.setIndicator("汽车"); 
        tabs.addTab(spec); 
        
        spec = tabs.newTabSpec("tab4"); 
        spec.setContent(R.id.tab4); 
        spec.setIndicator("科技"); 
        tabs.addTab(spec); 
        
        tabs.setCurrentTab(0); 
    } 


更新:上面代码无法实现Tab图片和文字分离显示,加一个下面的方法可以实现 

private View populateTabItem(String text, int drawable) { 
LinearLayout layout = new LinearLayout(context); 
layout.setOrientation(LinearLayout.VERTICAL); 

ImageView iv = new ImageView(context); 
iv.setImageResource(drawable); 
layout.addView(iv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, 
LinearLayout.LayoutParams.WRAP_CONTENT)); 

TextView tv = new TextView(context); 
tv.setGravity(Gravity.CENTER); 
tv.setSingleLine(true); 
tv.setText(text); 
layout.addView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, 
LinearLayout.LayoutParams.WRAP_CONTENT)); 

return layout; 


这样,每次创建TabSpec对象的时候声明indicator属性如下: 
tabSpec = tabHost.newTabSpec("tabHome"); 
tabSpec.setIndicator(populateTabItem("首页", R.drawable.icon)); 

posted @ 2012-02-19 17:14  swucim  阅读(270)  评论(0)    收藏  举报