android - 如何使用自定义 View 和选项卡创建 Android ActionBar

标签 android android-layout

我想创建带有自定义 View (DISPLAY_SHOW_CUSTOM) 的选项卡式 ActionBar (NAVIGATION_MODE_TABS)。它应该看起来像这样:

enter image description here

我只需要能够通过顶行中的按钮在 Activity 中导航 - 就像我在正常 - 非选项卡模式下使用 ActionBar 所做的那样,并且还能够切换第二行中的选项卡。如果我把ActionBar设置成标签模式,自定义 View 就消失了,标签模式和自定义 View 似乎是相互排斥的......这甚至可能吗?

在没有 ActionBar 的情况下,还有更多可能的方法可以做到这一点。通常我会创建一个带有按钮的布局,将其包含在 TabActivity(现已弃用)中,仅此而已。但我认为这不是最佳解决方案,因此不胜感激任何帮助或建议。

提前致谢。

编辑:经过一些研究,我发现它可以工作,只是没有显示在我的 4 英寸屏幕上。但是它仍然没有像我预期的那样工作。在较宽的屏幕上,自定义 View 显示在选项卡的右侧 - 没问题,但在 4 英寸手机屏幕上根本不显示。

我认为最好的解决方案是使用 ActionBarSherlock 库(我不喜欢使用已弃用的功能,我的应用程序也必须在 sdk11 之前版本的设备上工作)和 fragment - 一个用于顶级 ActionBar,第二个用于选项卡式 View 。

最佳答案

顶行的按钮必须添加为选项菜单项:

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    for (int i = 0; i < menuItems; i++)
    {
        if (i == 0)
        {
            menu.add(R.string.home).setIcon(R.drawable.button_home).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
            menu.getItem(0).setOnMenuItemClickListener(this);

        }
    }

    return super.onCreateOptionsMenu(menu);
}

ActionBar 的理念与我在询问时应该的理念略有不同。来自Android developer guide:

当您想在 Activity 中提供导航选项卡时,使用操作栏的选项卡是一个很好的选择(而不是使用 TabWidget),因为系统会针对不同的屏幕尺寸调整操作栏选项卡——将它们放在主操作栏中当屏幕足够宽时,或者当屏幕太窄时在单独的栏(称为“堆叠操作栏”)中。

关于android - 如何使用自定义 View 和选项卡创建 Android ActionBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190078/

相关文章:

android - Kotlin 中的字符串数组

java - Android Studio - 可绘制文件夹

java - 在 Java (Android) 中使用 LinearLayout 和 TextView 改变颜色

android - 自定义底页对话框的 View

android - 使用 kotlin 在 android 中获取屏幕截图的最简单方法是什么?

android - removeAllViews Android 上的动画

Android WebView 中的 URL 重定向

android - 覆盖 ArrayAdapter 中的 getView 并仍然保留复选框?

android - FINE_LOCATION 的准确性低于 COARSE_LOCATION

android - 谷歌地图 Android API v2 教程