Android TabWidget选项卡限制

Android TabWidget选项卡限制,android,tabcontrol,Android,Tabcontrol,我有一个android应用程序,目前有9个标签。每当添加新选项卡时,所有选项卡的宽度都会调整得更小。我觉得再加一个标签会使标签太小。有没有一种方法可以让TabWidget的侧面显示一个右/左箭头,类似于.NET选项卡控件,或者像这里所描述的那样将TabWidget包装在HorizontalScrollView中更好 您可以将TabWidget放入水平滚动视图,以便滚动选项卡 有关示例,请参见 如果需要选项卡两侧的按钮,可以进一步包装布局: 将HorizontalScrollView放在Relat

我有一个android应用程序,目前有9个标签。每当添加新选项卡时,所有选项卡的宽度都会调整得更小。我觉得再加一个标签会使标签太小。有没有一种方法可以让TabWidget的侧面显示一个右/左箭头,类似于.NET选项卡控件,或者像这里所描述的那样将TabWidget包装在HorizontalScrollView中更好

您可以将TabWidget放入水平滚动视图,以便滚动选项卡

有关示例,请参见

如果需要选项卡两侧的按钮,可以进一步包装布局: 将HorizontalScrollView放在RelativeLayout内,并在其左右两侧放置按钮。在按钮的OnClickListener中,您可以通过编程滚动TabWidget。

只需将TabWidget置于水平滚动视图中就会遇到问题: TabWidget中的视图不会填充屏幕,并且具有不同的宽度。 您可以通过设置其minWidth并将HorizontalScrollView的android:fillViewport设置为true来避免此问题

<HorizontalScrollView ... android:fillViewport="true">  
    <TabWidget android:id="@android:id/tabs" ... />
</HorizontalScrollView>


因此,您不需要为TabSpec指示器创建自己的视图。

请注意,并不是每个设备都有相同的物理宽度,因此9个选项卡在一个设备上可能是合理的,在另一个设备上可能是可怕的,在平板电脑上可能是惊人的。根据这一点,在ScrolLView中放置TabWidget没有任何作用。请仔细阅读你分享的文章,这篇文章解释了如何继续。它说将TabWidget放入ScrollView是不够的,你必须设置一些属性,我共享的帖子也会清除它。是的,它说使用水平滚动视图,而不是滚动视图。编辑:哦,你说的是水平滚动视图,你指的是水平滚动视图。+1!您的解决方案为我节省了30分钟的时间,让我在请求添加HorizontalScrollView和android:fillViewport=true的链接之间来回奔波!非常感谢。这是我在别处找不到的一个很好的答案。
int dips = 70; // The min width you want in DIP
int pixels = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) dips, getResources().getDisplayMetrics());
    TabWidget widget = tabHost.getTabWidget();
    for (int i = 0; i < widget.getChildCount(); ++i) {
        View v = widget.getChildAt(i);
        v.setMinimumWidth(pixels);
    }
}