文本没有出现在xhdpi kitkat屏幕上的操作栏中的图标

时间:2014-09-11 21:06:54

标签: android

我有一个图标,我想在操作栏中显示一些文字。然而,无论我做什么(改变文本总是显示,文本是一个字母,所以有绝对的空间等)我不能同时显示(图标总是显示正常),但仅限于xhdpi屏幕。如果我在240dpi或更低的速度下运行它会显示两者。我在谷歌上看到没有用图标显示的文字是ICS中的一个错误,但我在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>

2 个答案:

答案 0 :(得分:0)

您可以使用SpannableString并在文本前注入您的图标! 像这样:

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);

我希望这有效。

答案 1 :(得分:0)

奇怪的是,较高分辨率的屏幕并不表示与较低分辨率屏幕进行比较。 无论如何,我建议你检查它在 landscape 方向上是如何工作的。

如果您没有显示太多图标,可以尝试强制始终显示图标+包含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>

另一个选项是,您可以使操作栏项目布局膨胀,然后使用适配器进行自定义:Actionbar styled overflow menu items