1

为什么当我使用下面的 menu.xml 时图标没有出现!!。请帮我。

     <?xml version="1.0" encoding="utf-8"?>
     <menu xmlns:android="http://schemas.android.com/apk/res/android" >
     <group android:id="@+id/group1">
    <item android:id="@+id/item1" android:title="Embelance"   android:showAsAction="always|withText"
       android:icon="@drawable/ic_launcher" >
        <menu>
            <item android:id="@+id/E_H1" android:title="To home"  android:showAsAction="always|withText"
                android:icon="@drawable/ic_launcher"/>
            <item android:id="@+id/E_W1" android:title="To work"   android:showAsAction="always|withText"
                android:icon="@drawable/ic_launcher"/>
            <item android:id="@+id/E_O1" android:title="To oppional"  android:showAsAction="always|withText"
                android:icon="@drawable/ic_launcher"/>
        </menu>
    </item>
    <item android:id="@+id/item2" android:title="Fier"  android:showAsAction="always|withText"
        android:icon="@drawable/ic_launcher">
        <menu>
            <item android:id="@+id/F_H1" android:title="To Home"  android:showAsAction="always|withText"
                android:icon="@drawable/ic_launcher"/>
            <item android:id="@+id/F_W1" android:title="To work"   android:showAsAction="always|withText"
                android:icon="@drawable/ic_launcher"/>
            <item android:id="@+id/F_O1" android:title="To Optional"  android:showAsAction="always|withText"
                android:icon="@drawable/ic_launcher"/>
        </menu>
    </item>
</group>

当使用下一个属性时,它显示应用程序中存在错误。:窗口显示项目包含错误,在运行之前修复它或类似的东西。

android:icon="@android:drawable/ic_launcher"

代码是:

  @Override
public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo) {
    // Inflate the menu; this adds items to the action bar if it is present.
    super.onCreateContextMenu(menu, v, menuInfo);
    getMenuInflater().inflate(R.menu.main_context_menu, menu);

}


@Override
public boolean onContextItemSelected(MenuItem item) { 


    // .......
    switch(item.getItemId()){
    case R.id.E_H1:          // ........... 
                           break;
            case...case....case......      // other cases   


        return super.onContextItemSelected(item);
}
4

1 回答 1

1

我会尝试回答这个问题,但到目前为止,这个问题对我来说并不是 100% 清楚。根据评论,您似乎想知道如何将图标与菜单项中的文本结合起来。

为此,您自己在问题中提供了答案:第三项包含您需要的内容。如果您希望对菜单项块中的项目进行分组,那么您可以像以前一样使用组,但特别是对于您的示例,组是没有意义的。像下面这样就足够了(在摩托罗拉 Defy 2.3.6 和 Nexus 4 上运行):

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

    <item
        android:id="@+id/context_setting_item1"
        android:icon="@drawable/ic_launcher"
        android:title="@string/action_settings">
    </item>

</menu>

在你的Activity你将有(假设菜单在/res/menu/entry.xml):

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.entry, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.context_setting_item1:
        Toast.makeText(this, "context_setting_item1 selected", Toast.LENGTH_LONG).show();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

现在,回到菜单项一般性讨论:这些可视化组件已被ActionBar取代- 在公开内容/应用程序层次结构时更友好、更直接,而且很性感!:)

要深入开发,您可以查看此 Android 开发人员博客“再见 MenuItem”。有关更多开发细节,请查看开发人员部分。从编程的角度来看,这没什么大不了的,因为操作栏组件是用menu itemsxml 开发的。您只需要提供更多的 XML 属性。

例如:只有上面的 xml 更改为:

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

    <item
        android:id="@+id/context_setting_item1"
        android:icon="@drawable/ic_launcher"
        android:showAsAction="always|withText"
        android:title="@string/action_settings">
    </item>

</menu>

活动代码保持原样。

请注意,我只添加了android:showAsAction="always|withText".

有趣的是,摩托罗拉 2.3.6 上没有任何变化(因为ActionBar在 API 级别 11 中添加了),但在 Nexus 上,您会注意到顶部操作栏顶部有图标。以前,它有一个 3 点,用户必须点击它们才能查看操作。

如果您希望 api 级别低于 11 的操作栏,我强烈建议使用Sherlock ActionBar

于 2013-07-18T07:54:10.433 回答