Android ScrollView和TabHost混合使用问题记录

本文详细解析了在使用TabHost结合HorizontalScrollView实现横向滚动标签页时遇到的空白问题。核心原因是TabWidget默认使用最宽的标签计算整体宽度,导致较短标签后出现多余空间。解决方案是在TabWidget布局中添加属性android:measureWithLargestChild=false。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值