這個需求估計大家都是需要,,這幾天剛好做了一個項目,,也大概的研究了一下,下面將自己的研究成果展現(xiàn)給大家,,希望對大家有用,!
我就直接貼核心部分的源碼了,其他東西大家自己添加,,不要懶到只跟我要全部源碼,大家自己做一遍才能真正學到東西,!
先貼效果給大家看看:
-
- 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));
-
-
-
-
- /**
- * 此方法是為了去掉系統(tǒng)默認的色白的底角
- *
- * 在 TabWidget中mBottomLeftStrip、mBottomRightStrip
- * 都是私有變量,,但是我們可以通過反射來獲取
- *
- * 由于還不知道Android
2.2的接口是怎么樣的,,現(xiàn)在先加個判斷好一些
- */
- 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));
- }
- }
- }});
-
- }
-
-
- }
復制代碼
|