如何将菜单项添加到操作栏?

时间:2014-03-20 21:11:31

标签: java android android-actionbar r.java-file android-optionsmenu

我正在尝试将菜单项添加到操作栏。 菜单/ main.xml中:

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

    <item
        android:id="@+id/change_language"
        android:showAsAction="always"
        android:title="JP">
    </item>
    <item
        android:id="@+id/lists"
        android:icon="@android:drawable/ic_menu_agenda"
        android:showAsAction="always"
        android:title="Lists">
    </item>
    <item
        android:id="@+id/collections"
        android:icon="@android:drawable/ic_menu_star"
        android:showAsAction="ifRoom"
        android:title="Collections">
    </item>

</menu>

change_language,列表项目工作正常。菜单项&#34;集合&#34;没有显示

MainActivity.java

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    menu.findItem(R.id.change_language).setTitle("JP");
    return true;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

没有任何错误。我检查了R.java。没有提及&#34;集合&#34;。在撰写&#34; R.id时,Intellicence也没有给出提示。 &#34; 如何将菜单项添加到操作栏?也许这是因为我将应用发布到Google Play。但是,我已将Debuggable设置为&#39; true&#39;。

2 个答案:

答案 0 :(得分:0)

  

上面的showAsAction属性使用定义的自定义命名空间   标签。使用任何定义的XML属性时,这是必需的   支持库,因为这些属性不存在   旧设备上的Android框架。所以你必须使用自己的命名空间   作为支持库定义的所有属性的前缀。

请将此添加到您的代码'xmlns:yourapp =“http://schemas.android.com/apk/res-auto”'

并设置showAsAction属性,如下所示:yourapp:showAsAction =“always”in your items

答案 1 :(得分:0)

R.java不包含id.collections,它只包含main.xml,如下所示:

public static final class menu {
    public static final int main=0x7f0e0000;
}

此外,您的应用发布和此问题无关。

R.id.change_language在哪里?如果您想创建带有图标和标题的自定义操作栏,则必须修改main.xml并添加如下自定义布局:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/collection"
    android:actionLayout="@layout/your_custom_layout"
    android:showAsAction="ifRoom|withText"
    android:title="ActionBar"/>

</menu>

your_custom_layout.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<ImageView
    android:id="@+id/your_imageview"
    android:background="@android:drawable/ic_menu_star" />

<TextView 
    android:id="@+id/change_language"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</RelativeLayout>

然后,您可以在findViewById函数中onCreateOptionsMenu

希望这有帮助!