【问题标题】:How to display android actionbar title without truncation occurring如何在不发生截断的情况下显示android操作栏标题
【发布时间】:2025-12-07 20:20:05
【问题描述】:

我有一个标题相当长的应用程序(例如,我的长标题应用程序)。我正在使用 ActionBar 并注意到应用程序标题不断被截断(例如我的长标题 A...)。即使显示了 2 个操作栏项(均标记为“ifRoom”),也会发生这种情况。

有谁知道是否有办法确保活动标题宽度优先于“ifRoom”操作栏项目(即确保我的标题完整显示,如果需要更多空间,操作栏项目将移至下拉菜单) ?

非常感谢大家。

【问题讨论】:

    标签: android android-actionbar actionbarsherlock title truncate


    【解决方案1】:

    我在操作栏标题非常短时遇到了这个问题。即使使用 5-6 个字符串,操作栏标题也会被省略号截断。

    如果您有一个短标题(例如,“Shop”),则在输入字符串比之前的标题长的情况下调用 ActionBar.setTitle(<inputString or resId>)TextView 不会自行调整大小以提供新标题空间,即使ActionBar 有足够的空间。

    之前(短标题)

    // now call setTitle() with a longer title
    ActionBar actionBar = getActionBar();
    actionBar.setTitle("Collin");
    

    之后(短标题)

    解决方案

    将您的setTitle() 转至onCreateOptionsMenu()

    结果:

    【讨论】:

    • 我不明白,在这种情况下会发生。无论我从其中复制多少内容,我都会在我从事的一个大型项目中想到它,但在 POC 项目中却没有。任何关于何时发生这种情况的见解?
    【解决方案2】:

    当最后一个标题小于新标题时会导致此错误,因此诀窍是使最后一个标题始终比新 setTitle 长。

    即使在Google Issue Tracker 中也没有解决方案,问题状态现在已过时。

    更新:(解决方法)

    getSupportActionBar().setTitle("");
    
    getSupportActionBar().setTitle(title);
    

    【讨论】:

      【解决方案3】:

      很遗憾,没有办法防止操作栏标题被截断。但是,您确实可以选择一些选项来释放操作栏中的一些空间。您可以:

      1. 强制您的操作项进入溢出菜单。如果您使用的是最新的 ActionBarSherlock(4.2.0),则执行此操作要困难得多。有关使用 4.2.0 时的解决方法,请参阅此 answer。如果您觉得不需要最新的version,可以使用 ABS 4.1.0。在 4.1.0 上,您只需将活动主题设置为 @style/Theme.Sherlock.ForceOverflow。请注意,不建议强制使用溢出菜单,因为它会在应用之间提供不一致的导航。
      2. 您可以使用拆分操作栏并强制操作项进入底部操作栏。看看 CommonsWare 的回答 here。有关拆分操作栏的信息,请参阅here.

      【讨论】:

        【解决方案4】:

        我不确定是否有直接的方法,但有多种解决方法。

        1) 可以强制bar到底部,节省空间:

        How can I force the Action Bar to be at the bottom in ICS?

        http://developer.android.com/guide/topics/manifest/application-element.html

        2) 使用自定义字体设置标题: https://*.com/a/8748802/1276103

        3) 您可以将标题设置为两行: https://*.com/a/18867068/1276103

        【讨论】:

          最近更新 更多