visited 13 states (5.77%)
Create your own visited map of The World or Triposo world travel guide for Android

2014-11-28

Andorid軟體中設定TabHost的字體與樣式

在開發多個tab頁面的應用程式時,可能需要對每個tab的標籤做些修改,以下是相關的程式
import java.lang.reflect.Field;
import android.app.Activity;
import android.os.Build;
import android.R;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;
import android.widget.TabHost.OnTabChangeListener;
public class TabTest2 extends Activity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(com.TabTest2.R.layout.main);
final TabHost tabs=(TabHost)findViewById(com.TabTest2.R.id.tabhost);
final TabWidget tabWidget=(TabWidget) findViewById(R.id.tabs);
int width =45;
int height =48;
Field mBottomLeftStrip;
Field mBottomRightStrip;
tabs.setup();



tabs.addTab(tabs.newTabSpec("first tab")
.setIndicator("news",getResources().getDrawable(com.TabTest2.R.drawable.c))
.setContent(com.TabTest2.R.id.tab1));
tabs.addTab(tabs.newTabSpec("second tab")
.setIndicator("help",getResources().getDrawable(com.TabTest2.R.drawable.e))
.setContent(com.TabTest2.R.id.tab2));
tabs.addTab(tabs.newTabSpec("third tab")
.setIndicator("setting",getResources().getDrawable(com.TabTest2.R.drawable.efg))
.setContent(com.TabTest2.R.id.tab2));

tabs.setCurrentTab(0);


for (int i =0; 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 * 私有變數,可以通過反射來獲取 * * **/ 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 (com.TabTest2.R.drawable.linee)); mBottomRightStrip.set(tabWidget, getResources().getDrawable (com.TabTest2.R.drawable.linee)); } catch (Exception e) { e.printStackTrace(); } } else { } View v = tabWidget.getChildAt(i); if(tabs.getCurrentTab()==i){ v.setBackgroundDrawable(getResources().getDrawable(com.TabTest2.R.drawable.shine)); } else { v.setBackgroundDrawable(getResources().getDrawable(com.TabTest2.R.drawable.seven)); } } /** * 當點擊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 v = tabWidget.getChildAt(i); if(tabs.getCurrentTab()==i){ v.setBackgroundDrawable(getResources().getDrawable(com.TabTest2.R.drawable.shine)); } else { v.setBackgroundDrawable(getResources().getDrawable(com.TabTest2.R.drawable.seven)); } } }}); } }
也可以用這種方式
TabHost tabHost = getTabHost();
for(int i=0;i<tabhost.getTabWidget().getChildCount();i++) 
        { 
            TextView tv = (TextView) tabhost.getTabWidget().getChildAt(i).findViewById(android.R.id.title); //Unselected Tabs
            tv.setTextColor(Color.parseColor("#ffffff"));
        } 
        TextView tv = (TextView) tabhost.getCurrentTabView().findViewById(android.R.id.title); //for Selected Tab
        tv.setTextColor(Color.parseColor("#000000"))

這些也是同標籤文章 :

沒有留言: