相关疑难解决方法(0)

如何在Action Bar上更改标题文本的大小?

有一个ActionBar在每个Android 4.0的应用程序,它得到了一个称号.我需要减小这个尺寸.但我不明白我是怎么做到的,因为ActionBar它没有为它提供公共方法.备注:我不想使用自定义视图.

java android text-size android-actionbar

38
推荐指数
5
解决办法
6万
查看次数

ActionBar容量/溢出不会改变方向

我有一个使用ActionBar的应用程序,我自己处理方向更改:

android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
Run Code Online (Sandbox Code Playgroud)

...并且菜单应该适合ActionBar而不会在横向上溢出,但不能在纵向中溢出:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="@string/Game"  android:id="@+id/game"  android:icon="@android:drawable/ic_menu_manage"     android:showAsAction="ifRoom|withText"/>
<item android:title="@string/Type"  android:id="@+id/type"  android:icon="@android:drawable/ic_menu_edit"       android:showAsAction="ifRoom|withText"/>
<item android:title="@string/Other" android:id="@+id/other" android:icon="@android:drawable/ic_menu_gallery"    android:showAsAction="ifRoom|withText"/>
<item android:title="@string/Solve" android:id="@+id/solve" android:icon="@android:drawable/ic_menu_directions" android:showAsAction="ifRoom|withText"/>
<item android:title="@string/Help"  android:id="@+id/help"  android:icon="@android:drawable/ic_menu_help"       android:showAsAction="ifRoom"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

在启动时,这可以正常工作:

景观: 广泛的ActionBar包含所有项目

肖像: 缩小ActionBar溢出 (是的,我可以强制所有项目始终显示并且它们适合,如下所示,但可能会在较小的平板电脑上打破)

当模拟器更改方向时,ActionBar的容量似乎没有变化:

肖像,当我开始在风景中: 缩小ActionBar,包含所有项目 (这没关系,但不一致)

风景,当我开始画像时: 带溢出的宽ActionBar 这看起来很傻,这也是我想解决这个问题的原因.

我将此调用添加到invalidateOptionsMenu(),但它没有帮助:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    maybeMoveSomeViewsAround(newConfig);
    super.onConfigurationChanged(newConfig);
    invalidateOptionsMenu();
}
Run Code Online (Sandbox Code Playgroud)

(实际上我通过反射来调用它以实现向后兼容性,但调试器告诉我它确实被调用并且没有遇到异常.)

invalidateOptionsMenu()实际上最终在返回之前调用onCreateOptionsMenu()(它重新膨胀菜单),我可以在后面看到getResources().getConfiguration().orientation已经改变了.所以这真的令人费解.如果正在重新创建选项菜单,当方向已更改时,它必须是ActionBar本身缓存宽度?

有没有办法在不破坏/创建活动的情况下重新创建ActionBar?(因为后者在我的情况下有点贵)

编辑:这是一个显示问题的最小示例项目.

编辑2:我曾想过检查屏幕宽度并以编程方式调整始终和从不适当之间的showAsAction标志,但这需要知道(或猜测)每个项目的宽度.ActionBar的公共API在这一点上对我没有帮助.

android android-layout android-menu android-actionbar

8
推荐指数
2
解决办法
3824
查看次数

可以改变ActionBar的文字大小/颜色吗?

有没有办法改变ActionBar标题和副标题的大小/颜色?

我正在使用ActionBarSherlock来桥接较低版本和更高版本.ActionBarSherlock提供了在SherlockActionBarCompat中自定义文本样式的方法,但似乎没有办法在SherlockActionBarNative中创建它.

编辑: 由杰克添加并由作者删除

编辑: 关闭解决方案:

<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>
Run Code Online (Sandbox Code Playgroud)

感谢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的输出相同,并抛出异常:引起:java.lang.UnsupportedOperationException:无法转换为维度:type = 0x10

size android text actionbarsherlock

4
推荐指数
1
解决办法
1万
查看次数