xhdpi kitkat屏幕上的操作栏中没有显示带有图标的文本



我有一个图标,我想在操作栏中显示一些文本。然而,无论我做什么(将文本更改为始终显示,让文本是一个字母,这样肯定有空间,等等),我都无法同时显示(图标总是显示得很好),只能在xhdpi屏幕上显示。如果我以240dpi或更低的分辨率运行它,它会同时显示这两种分辨率。我在谷歌上看到没有图标显示的文本是ICS中的一个bug,但我正在API 19上测试。有解决办法吗?感谢

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item 
    android:id="@+id/action_dafuq"
    android:icon="@drawable/dafuq"
    android:title="@string/dafuq"
    android:showAsAction="ifRoom|withText" />
</menu>

您可以使用SpanableString并在文本之前插入图标!类似这样的东西:

final MenuItem action_dafuq = menu.findItem(R.id.action_dafuq);;
final ImageSpan icon = new ImageSpan(getContext(), R.drawable.icon);
final SpannableString title = new SpannableString("  " + "dafuq");
title.setSpan(icon, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
action_dafuq.setTitle(title);

我希望这能奏效。

奇怪的是,与较低分辨率的屏幕相比,较高分辨率的屏幕不会同时显示两者。无论如何,我建议您检查一下它是如何在横向方向上工作的。

如果你没有那么多的图标可以显示,你可以尝试强制始终显示图标+文本结合alwayswithText标签

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item 
    android:id="@+id/action_dafuq"
    android:icon="@drawable/dafuq"
    android:title="@string/dafuq"
    android:showAsAction="always|withText" />
</menu>

另一个选项是,您可以扩展操作栏项目布局并使用适配器进行自定义:操作栏样式的溢出菜单项

最新更新