在达到限制时,在ActionBar上创建选项卡,而不是创建下拉列表

时间:2012-02-13 20:29:18

标签: android tabs scroll android-actionbar

正如标题所示,我有一个Android 4.0平板电脑应用程序,它使用操作栏和标签模式。

如果我向操作栏添加超过4或5个选项卡,则会创建一个下拉列表。我已阅读文档,其中指出,“注意:在某些情况下,Android系统会将操作栏标签显示为下拉列表,以确保最适合操作栏。”

只是想知道是否可以覆盖默认行为并让动作栏滚动项目?设计文档http://developer.android.com/design/patterns/actionbar.html讨论了可滚动的选项卡,但除了在设计文档中,我似乎无法找到关于它们的任何信息。

4 个答案:

答案 0 :(得分:10)

我一直在努力让这个工作。但是,在使用ActionBarSherlock后,解决方案非常容易。如果您下载示例Styled源并查看MainActivity类,您可以看到它创建并添加选项卡,并在其下方:

actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

我在添加标签之前调用了这些标签,我的标签已经变成了一个下拉列表。事实证明,您需要做的就是在添加标签后调用它们以保留滚动标签。

答案 1 :(得分:2)

阅读http://developer.android.com/guide/topics/ui/actionbar.html

中的“添加操作视图”部分
  

操作视图是一个小部件,它显示在操作栏中,作为操作项按钮的替代。

您可以通过指定

HorizontalScrollView用作操作视图
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/mytabwidget"
      android:title=""
      android:icon="@drawable/ic_launcher"
      android:showAsAction="always"
      android:actionViewClass="android.widget.HorizontalScrollView" />
</menu>

HorizontalScrollView

中引用此public boolean onCreateOptionsMenu(Menu menu)

使用RadioGroup定义RadioButton,其中每个RadioButton选中后,都会更新其关联的标签内容。现在将此RadioGroup添加到HorizontalScrollView

中的public boolean onCreateOptionsMenu(Menu menu)

您可以使用selectTab(ActionBar.Tab tab)或其他等效方法更新标签内容。

您可以通过将RadioButton设置为透明图片然后设置一些android:button状态来更改StateListDrawable的外观,并选中状态,然后选择正常状态。

见下面我使用这种方法的屏幕。

enter image description here

在上图中,选中每个RadioButton时,会选择不同的标签。

答案 2 :(得分:0)

你有没有看过SDK中的Honeycomb Gallery示例应用程序?它可能有你想要的东西。将其安装在ICS非平板电脑设备上以查看可滚动选项卡。平板电脑的屏幕空间太大,无法滚动。

http://developer.android.com/resources/samples/HoneycombGallery/index.html

答案 3 :(得分:-1)

用户界面的工作方式是有原因的。拥有一组可滚动的选项卡非常令人困惑。很可能根本不清楚右侧有更多选项卡,用户永远不会知道他们可以滚动标签以获得更多功能。

我建议坚持平台的设计方式。它通常是有原因的。