Tab 选项卡的设置

 import android.app.TabActivity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.widget.*;
 import android.widget.TabHost.OnTabChangeListener;
 import android.os.Build;
 import android.view.View;
 import java.lang.reflect.Field;
 import android.view.LayoutInflater;


 public class testTabActivity extends TabActivity {
   /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          
          int width =45;
          int height =48;
          
          final TabHost tabs = getTabHost();
          final TabWidget tabWidget = tabs.getTabWidget();
          
          Field mBottomLeftStrip;
          Field mBottomRightStrip;
       
          LayoutInflater.from(this).inflate(R.layout.tab_views, tabs.getTabContentView(), true);
       
          tabs.addTab(tabs.newTabSpec("first tab")
               .setIndicator("信息",getResources().getDrawable(R.drawable.m))
               .setContent(new Intent(testTabActivity.this,OneActivty.class))
               );
          
          tabs.addTab(tabs.newTabSpec("second tab")
           .setIndicator("收藏",getResources().getDrawable(R.drawable.n))
           .setContent(R.id.content));
          
          tabs.addTab(tabs.newTabSpec("second tab")
               .setIndicator("设置",getResources().getDrawable(R.drawable.s))
               .setContent(R.id.content));
          





          for (int i =0; i < tabWidget.getChildCount(); i++) {
              /**
               * 设置高度、宽度,不过宽度由于设置为fill_parent,在此对它没效果
               */
              tabWidget.getChildAt(i).getLayoutParams().height = height;
              tabWidget.getChildAt(i).getLayoutParams().width = width;
             
          
           /**
            * 设置tab中标题文字的颜色,不然默认为黑色
            */
            final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
          
            tv.setTextColor(this.getResources().getColorStateList(android.R.color.white));
         
             
          
             
              /**
               * 此方法是为了去掉系统默认的色白的底角
               *
               * 在 TabWidget中mBottomLeftStrip、mBottomRightStrip
               * 都是私有变量,但是我们可以通过反射来获取
               *
               * 由于还不知道Android 2.2的接口是怎么样的,现在先加个判断好一些
               */
           if (Float.valueOf(Build.VERSION.RELEASE) <= 2.1) {
                 try {
                    mBottomLeftStrip = tabWidget.getClass().getDeclaredField ("mBottomLeftStrip");
                    mBottomRightStrip = tabWidget.getClass().getDeclaredField ("mBottomRightStrip");
                    if(!mBottomLeftStrip.isAccessible()) {
                      mBottomLeftStrip.setAccessible(true);
                    }
                    if(!mBottomRightStrip.isAccessible()){
                      mBottomRightStrip.setAccessible(true);
                    }
                   mBottomLeftStrip.set(tabWidget, getResources().getDrawable (R.drawable.no));
                   mBottomRightStrip.set(tabWidget, getResources().getDrawable (R.drawable.no));
                   
                 } catch (Exception e) {
                   e.printStackTrace();
                 }
          } else {
           /**
           * 不做任何处理
           */
           }
          View vvv = tabWidget.getChildAt(i);
    if(tabs.getCurrentTab()==i){
            vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_button));
    }
    else {
            vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.bar));
    }
          
          }
          /**
           * 当点击tab选项卡的时候,更改当前的背景
           */
          tabs.setOnTabChangedListener(new OnTabChangeListener(){
     @Override
     public void onTabChanged(String tabId) {
      // TODO Auto-generated method stub
      for (int i =0; i < tabWidget.getChildCount(); i++) {
       View vvv = tabWidget.getChildAt(i);
       if(tabs.getCurrentTab()==i){
               vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_button));
       }
       else {
               vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.bar));
       }
      }
     }});
         
      }
      
      
 }

你可能感兴趣的:(android,OS)