TabHost中的标签页众多,所以要做成横向可滚动的,在TabWidget外加一层HorizontalScrollView.
由于TabHost中的item是TextView,并且每个TextView的宽度不一样,这样就会导致没动到最后的时候会多出来一段空白,具体的原因如下:
TabWidget has measureWithLargestChild set to true by default, which means it is using the widest of tabs to calculate the overall width of the internal LinearLayout that TabWidget uses when it measures itself. If tabs are of different length this will lead to that internal LinearLayout having some extra space on the end from the difference between the shorter tabs and widest tab. So the solution is: add android:measureWithLargestChild="false" to TabWidget layout.
xml中的代码片段如下:
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="none">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:measureWithLargestChild="false"
android:divider="@null" />
</HorizontalScrollView>
本文详细解析了在使用TabHost结合HorizontalScrollView实现横向滚动标签页时遇到的空白问题。核心原因是TabWidget默认使用最宽的标签计算整体宽度,导致较短标签后出现多余空间。解决方案是在TabWidget布局中添加属性android:measureWithLargestChild=false。
145

被折叠的 条评论
为什么被折叠?



