是否可以更改ActionBar的文本大小/颜色?

4

有没有可能改变ActionBar的标题和副标题的大小和颜色?

我正在使用ActionBarSherlock来桥接低版本和高版本。ActionBarSherlock提供了在SherlockActionBarCompat中自定义文本样式的方法,但似乎在SherlockActionBarNative中没有这种方法。

编辑: 由Jake添加并被作者删除

编辑: 接近解决方案:

<style name="resizeableTitleStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title.Inverse">
    <item name="android:textSize">@dimen/action_bar_title_text_size</item>
</style>

<style name="Theme.ResizeableActionBar" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="actionBarStyle">@style/resizeableActionBarStyle</item>
    <item name="android:actionBarStyle">@style/resizeableActionBarStyle</item>
    <item name="actionBarSize">60dp</item>
    <item name="android:actionBarSize">60dp</item>
</style>

<style name="resizeableActionBarStyle" parent="@style/Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="titleTextStyle">@style/resizeableTitleStyle</item>
    <item name="android:titleTextStyle">@style/resizeableTitleStyle</item>
</style>

感谢ABS的作者Jake提供帮助。现在几乎完成了,除了actionBarSize只能估计近似绝对尺寸(我的应用程序为60dp),需要进行多次试验;wrap_content会导致API2.2扩展整个屏幕,并且在解析xml时会出现API4.2.2异常。补充:将actionBarSize设置为0dp时,输出结果如下(http://i.stack.imgur.com/xX4E1.png,因声望过低无法直接发布图片):左侧为API2.2,操作栏占据整个屏幕而没有内容;右侧为API4.2.2,没有操作栏但有内容。将其设置为wrap_content时,API2.2输出结果相同,但是会抛出异常:Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x10.

titleTextStyle 属性放在你从 actionBarStyle 引用的样式中。 - Jake Wharton
1个回答

9

是的,这是可能的。你可以通过样式来实现:

<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Medium">
        <item name="android:textColor">@color/green_text_color</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">@dimen/actionbar_textsize</item>
</style>

并将其与以下内容一起使用:

 <item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
 <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>

由于超过了评论的字符限制,我在另一篇帖子中回复了。请帮忙。 - user1105115
@Blackbelt: 你好,能否解释一下为什么我们需要同时使用"titleTextStyle"和"android:titleTextStyle"?谢谢。 - namanhams
2
答案相当古老,但是没有 Android 的是用于 actionbarsherlock/actionbarcompat,而有 Android 的是用于原生 actionbar @namanhams。 - Blackbelt
是啊!!!!!!!!!!!!!!!!!!!!!!! 好的坏词,坏的坏词,坏的坏词。我从昨晚开始琢磨这个无聊的东西,一直到现在,从来没想过我得在应用程序主题样式中定义android文本大小。哦,天哪!Android API是最糟糕的。我的意思是,它让Windows编程看起来像abc一样简单。至少你可以花上一个小时浏览MSDN并理解如何使用一个函数。而使用android,你必须花费整整一天时间搜索android参考资料,在教程、堆栈溢出和前后反复的过程中,就像一名调查记者,直到你的运气终于到来。 - user9599745
我的另一个问题是TextView自动调整大小。每个人都谈论autoSizeTextType、auto min size和auto max size,但是为什么它对我根本没有用却没有很好的答案。即使TextView重心填充也不起作用。我猜想这可能与应用程序主题属性有关,但这只是一个假设。我请求帮助。 - user9599745
最好附上一些代码来提出问题。随意在此粘贴链接。 - Blackbelt

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