2011-05-04 31 views
0
for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) { 

      Log.v("","tabhost..."); 
      Log.v("","tabHost.getTabWidget().getChildAt(i).getLayoutParams() " +tabHost.getTabWidget().getChildAt(i)); 
      RelativeLayout relativeLayout = (RelativeLayout)tabHost.getTabWidget().getChildAt(i); 
      relativeLayout.getChildCount(); 
      Log.v("","count "+relativeLayout.getChildCount()+" relativeLayout.getChildAt(i) "+relativeLayout.getChildAt(i)); 
      TextView tabhostText = (TextView) relativeLayout.getChildAt(1); 

      tabhostText.setTextSize(20.0f); 
      tabHost.getTabWidget().getChildAt(i).getLayoutParams().height = 30; 

     } 

在上面的代碼中,一切工作正常,即我能夠看到選項卡上的文本。但是我無法看到設備中的文字。只有部分文字可見。請任何機構找到解決辦法。Tab在android中的主機高度

在此先感謝..

回答

1

我知道你的問題是10個月大了,但原因只是文本的一部分是可見的,是因爲你設置的高度剛好30手機上的默認值是可能96像素(或者如果你的手機的分辨率較低,可能是64)。

如果您希望使代碼更具通用性,您可以先獲取標籤的高度,然後將每個標籤的高度設置爲原始高度的百分比。在下面的例子中我的選項卡的高度設置爲原始高度:

double height = tabHost.getTabWidget().getChildAt(0).getLayoutParams().height; 

    for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) { 

       RelativeLayout relativeLayout = (RelativeLayout)tabHost.getTabWidget().getChildAt(i); 
       TextView tabhostText = (TextView) relativeLayout.getChildAt(1); 

       tabhostText.setTextSize(20.0f); 
       tabHost.getTabWidget().getChildAt(i).getLayoutParams().height = (int) (0.8 * height); 

      } 

P.S.的80%下次你可能想更好地說出你的問題。我想我明白你在問什麼,但只是因爲我正在做同樣的事情。嘗試以正常問題形式表述問題(例如以問號結尾)。

1

我找到了解決辦法。

View v = getLayoutInflater().inflate(R.layout.tab_header, null); 
tabSpec.setIndicator(v); 

只需使用自定義佈局的選項卡。

+0

當您需要通過tabhost進行高級別的自定義時,使用自定義佈局是極好的解決方案。我已經成功地使用它來爲每個選項卡製作自定義佈局。然後您可以使用v.findViewByID()訪問子控件 – Shane 2014-07-10 10:09:41