计算选项卡宽度时不填充整个屏幕我有含有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