android自定义tabhost样式

public class CustomTabhost 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.loading, tabs.getTabContentView(), true);
    
        tabs.addTab(tabs.newTabSpec("first tab")
             .setIndicator("信息")
             .setContent(new Intent(CustomTabhost.this,Load.class))
             );
       
        tabs.addTab(tabs.newTabSpec("second tab")
         .setIndicator("收藏")
         .setContent(new Intent(CustomTabhost.this,Load.class)));
       
        tabs.addTab(tabs.newTabSpec("second tab")
             .setIndicator("设置")
             .setContent(new Intent(CustomTabhost.this,Load.class)));

        tabs.setCurrentTab(1);  






        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.substring(0, 3)) <= 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.navbgfocus));
  }
  else {
          vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.menubg));
  }
       
        }
        /**
         * 当点击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.menufocus));
     }
     else {
             vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.menubg));
     }
    }
   }});
      
    }

}

你可能感兴趣的:(android)