計算選項卡寬度時不填充整個屏幕我有含有TabHost
水平ScrollView
內五個標籤。我希望所有標籤都具有相同尺寸,最小尺寸爲83dp。如果第五個選項卡適合屏幕顯示,則所有選項卡都會變寬以填充整個屏幕。以下是實現此目的的代碼:TabHost根據屏幕寬度
int tabMinWidth = (int) (83 * density);
int tabWidth = tabMinWidth
int nrOfTabs = displayMetrics.widthPixels/tabMinWidth;
if (nrOfTabs > 4)
tabWidth = displayMetrics.widthPixels/5;
for(int i = 0; i < 5; i++)
tabHost.getTabWidget().getChildAt(i).getLayoutParams().width = tabWidth;
基本上代碼工作正常。但是,選項卡並未使用整個屏幕寬度。例如:五個選項卡與96PX不填充屏幕分辨率320x480在橫向模式下(約20像素的未使用的空間),雖然96×5正好是480我如何才能提高代碼,使標籤確實填滿整個屏幕?
UPDATE: 解決方案:我發現了約4-5%調整每個選項卡工作得很好:
tabWidth = (int) (tabWidth *1.04);
更新2: 我想我找到原因問題。這些選項卡具有負右側和左側邊距。考慮到這些利潤率可以解決問題,並且TabHost
恰好填滿整個屏幕。
是標籤按鈕之間有差距?這可能是20px – blessenm
是的,這些標籤之間存在細微差距,但我懷疑它們是未使用空間的原因。它們應該使TabHost變得更寬(寬度+間隙)而不是太小。我現在通過將tabWidth乘以1.04來解決問題。但是,這只是一個近似值,仍然需要改進。 – crnv