Posts match “ TabWidget ” tag:

功能需求

需要更動Android內建TabWidget元件當中文字的屬性,在此以更改文字大小、文字強制限制單行顯示(不自動換行)為例。


思路

這邊重點在於如何取得在TabWidget當中的TextView元件,一旦取得後就可以依照你的需求做更改。


程式碼

TabWidget tabWidget = this.tabHost.getTabWidget();
for ( int i = 0; i < 4; i++ )
{
    LinearLayout tabView = (LinearLayout) tabWidget.getChildAt( i );
    TextView tabTextView = (TextView) tabView.findViewById( android.R.id.title );
    tabTextView.setLayoutParams( new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT,  LinearLayout.LayoutParams.MATCH_PARENT ) );
    tabTextView.setTextSize( 12 );
    tabTextView.setSingleLine();
    tabTextView.setGravity( Gravity.CENTER );
    tabTextView.setPadding( 0, 0, 0, 0 );
}

解說和注意要點

  • 如果要一次設定完所有Tab,那此段程式碼要寫在所有tab加入之後,也就是寫在所有tabHost.addTab( newTab )之後。
  • 先從TabHost取得TabWidget,可以採用下列兩個方法取得:
    TabWidget tabWidget = this.tabHost.getTabWidget();
    
    (TabWidget)this.findViewById( android.R.id.tabs );
    
    本範例採用第一種方法取得,而第二種方法注意R是Android本身原本套件而非你專案的R檔。
  • 有for迴圈是因為有多個Tab要設定,如果只有單一個Tab要設定,可以直接使用(LinearLayout) tabWidget.getChildAt( i );來取得TabView,i一樣是從0開始的整數。
  • (TextView) tabView.findViewById( android.R.id.title );這行就是取得Tab的TextView,一樣注意到R是Android本身原本套件而非你專案的R檔。
  • 取得TextView物件後,就可以依照你的需求開始設定。

參考

http://stackoverflow.com/questions/19442084/change-the-text-size-in-tab-in-android