y150988451 发表于 2013-1-15 02:29:34

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));       }      }   }});               }             }
页: [1]
查看完整版本: Tab 选项卡的设置