ActionBar:在导航栏按钮上居中文本

3

简单目标:

在我的 ActionBar 导航栏中具有默认按钮,文本居中对齐。我只想使用默认的简单方法:

ActionBar.Tab myTab = Actionbar.newTab()
myTab.setText("my tab's text");

问题是什么

我无法找到任何简单的方法来实现这一点。您无法访问视图(因为ActionBar.Tab.getCustomView()始终返回null,因为它是默认视图)。在ActionBarActionBar.Tab等中,我看不到任何可以获取当前视图、获取或修改LayoutParams(特别是Gravity)的方法。下面是问题的可视化表示(单行似乎工作正常,但双行导航按钮明显左对齐): enter image description here

不理想的解决方案

我是否正确地认为,唯一实现这一点的方法是为所有选项卡使用自定义视图,以某种方式猜测/尝试复制选项卡的默认格式(因为我找不到任何访问这些视图的方法),并假设/希望ActionBar.Tab文本的默认格式/字体/样式不会很快更改?

肯定有更好的方法吧?


一个答案被接受,证实了我的负面猜测。如果有人有任何聪明的解决方法,更好的解决方案将是非常棒的。 - btalb
2个回答

2
据我所知,你无法访问 ActionBar 中的 Views。使用自定义布局似乎是唯一的解决方案。不过,Android 是否会自动将文本居中对齐?在我所有的应用程序中似乎都是这样做的。

我已经添加了一个问题的图片。你是对的,单行按钮似乎有居中对齐的文本,但一旦变成双行,似乎就不是这样了。说实话,这似乎很奇怪(除非我在文本格式化过程中忽略了什么)。无论如何,我仍然想改变它,但似乎不容易做到。 - btalb
ActionBar 没有访问其 View 的方法。另一方面,如果您使用自定义的 View,则可能需要担心方向更改和屏幕大小更改。 - jaibatrik
一个相关的问题 - http://stackoverflow.com/questions/12870396/access-views-in-android-actionbar - jaibatrik
谢谢,这让我有些担心。在 Android 中,似乎存在一个主题,即您可以访问所需的内容,但在“ActionBar”中却排除了很多此类功能。我想要它居中,但我不想为制作自定义视图的所有元素而担心(仅为居中文本似乎有些荒谬)。我会保持开放,并查看是否有人有聪明的解决方案/解决方法。 - btalb
目前还没有解决方案。似乎唯一的选择是要么接受现状,要么创建自己的自定义视图布局,看起来像默认的布局,并具有正确对齐的文本,然后使用“ActionBar.Tab.setCustomView()”设置它为“ActionBar.Tab”。考虑到完全重新创建具有正确布局选项的布局所需的工作量,保持它们只有一行似乎更容易 ;) 另一个选择可能是在源代码中查找默认选项卡视图布局是如何构建的,并将其复制为自定义视图。 - btalb
我在问题上留了一条评论,仅仅是指出这个答案被接受了,因为它似乎是唯一可能的解决方案。 - btalb

0

你在说哪个例子?ABS 是一个完整的项目,允许在早期的 Android 版本上使用 ActionBar - btalb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接