2010-12-14 138 views
0

我有一些不同高度的圖標,我的HTC Legend上的默認tabspec佈局將圖標放在頂部。看起來像內置佈局的TabHost.TabSpec佈局

我想通過爲tabspec定義我自己的佈局來對其進行居中,但經過多次實驗後,我仍然無法使其看起來像內置佈局。

所以我需要爲我的tabspec佈局內置填充&背景,任何人都知道他們被稱爲什麼? -

+0

將樣式設置爲「@android:style/Widget.TabWidget」導致:android.content.res.Resources $ NotFoundException:來自可繪製資源ID的文件res/drawable-mdpi/title_bar_shadow.9.png#0x1030034 – 2010-12-14 15:54:53

回答

0

太多擺弄通過創建一個固定的高度和寬度可變圖標的標籤解決它:

private Drawable getTabIcon(byte chainID, Resources res) { 
    BitmapDrawable chainIcon = (BitmapDrawable) res.getDrawable(ChainDisplay.getIconID(chainID)); 

    int tabIconHeight; 
    switch(res.getDisplayMetrics().densityDpi) { 
     case DisplayMetrics.DENSITY_LOW: 
      tabIconHeight = 24; 
      break; 
     case DisplayMetrics.DENSITY_MEDIUM: 
      tabIconHeight = 32; 
      break; 
     case DisplayMetrics.DENSITY_HIGH: 
      tabIconHeight = 48; 
      break; 
     default: 
      tabIconHeight = 48; 
      break; 
    } 

    Bitmap tabIconBitmap = Bitmap.createBitmap(chainIcon.getIntrinsicWidth(), tabIconHeight, Bitmap.Config.ARGB_8888); 
    new Canvas(tabIconBitmap).drawBitmap(chainIcon.getBitmap(), 0, (tabIconHeight - chainIcon.getIntrinsicHeight())/2, null); 
    return new BitmapDrawable(tabIconBitmap); 
} 

做了一些與縮放和Paint.ANTI_ALIAS_FLAG實驗,但它是醜陋的,所以圖像裁剪被選中。