无法使用appcompat lib显示带有文本的图标

时间:2015-04-06 08:19:16

标签: android menuitem appcompat-v7-r21

我正在尝试使用appcompat lib显示带有文本的图标,但我无法做到。

如果我删除图标,它会在溢出菜单中显示图标或文本。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_next"
        android:title="Next"
        android:icon="@drawable/abc_ic_cab_done_holo_dark"
        app:showAsAction="always|withText" />
</menu>

帮助将不胜感激。 感谢

2 个答案:

答案 0 :(得分:0)

您可以通过两种方式创建包含文本的操作:

1-从XML:

<item android:id="@id/resource_name"
      android:title="text"
      android:icon="@drawable/drawable_resource_name"
      android:showAsAction="withText" />

2-编程:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuItem item = menu.add(Menu.NONE, ID, POSITION, TEXT);
    item.setIcon(R.drawable.drawable_resource_name);
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    return true;
}

答案 1 :(得分:0)

我也遇到了这个问题。使用此代码,对我来说工作正常。

&#13;
&#13;
@Override
	public boolean onMenuOpened(int featureId, Menu menu) {
		if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
			if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
				try {
					Method m = menu.getClass().getDeclaredMethod(
							"setOptionalIconsVisible", Boolean.TYPE);
					m.setAccessible(true);
					m.invoke(menu, true);
				} catch (NoSuchMethodException e) {
					Log.d("DEBUG", "onMenuOpened", e);
				} catch (Exception e) {
					throw new RuntimeException(e);
				}
			}
		}
		return super.onMenuOpened(featureId, menu);
	}
&#13;
&#13;
&#13;

而menu.xml就像

&#13;
&#13;
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    >

    <item
        android:id="@+id/action_logout"
        android:icon="@drawable/ic_logout"
        android:orderInCategory="100"
        android:title="@string/action_logout"
        app:showAsAction="never"/>
    <item
        android:id="@+id/action_rate"
        android:icon="@drawable/ic_rate"
        android:orderInCategory="101"
        android:title="RATE US"
        app:showAsAction="never"/>
    <item
        android:id="@+id/action_share"
        android:icon="@drawable/ic_share"
        android:orderInCategory="102"
        android:title="SHARE APP"
        app:showAsAction="never"/>

</menu>
&#13;
&#13;
&#13;

试一试,让我知道