Android Studio:上下文菜单图标不会出现

时间:2016-09-01 14:06:26

标签: android

我在列表的项目上有一个列表视图和一个上下文菜单。 我尝试创建一个非常简单的东西 - 使用android:icon将图标添加到上下文菜单。 出现上下文菜单,但未显示图标。 我错了什么? 谢谢。

我的上下文菜单xml和mainactivity.java是:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/action_delete"
        android:icon="@android:drawable/ic_delete"
        android:title="Delete" />

    <item
        android:id="@+id/action_add"
        android:icon="@android:drawable/ic_menu_add"
        android:title="Add" />
</menu>


public class MainActivity extends AppCompatActivity {

    public ListView listView;
    String listItems[]={"One", "Two", "Three"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView=(ListView) findViewById(R.id.mylist);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listItems);
        listView.setAdapter(adapter);
        registerForContextMenu(listView);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("Select the action");

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
    }
}

1 个答案:

答案 0 :(得分:1)

始终尝试将本地副本作为SDK文件夹中的图标,因为这些资源必然会发生变化,并且应用行为可能不同。

注意:

  

如果要使用任何图标或其他内部可绘制资源,则应将这些图标或绘图的本地副本存储在应用程序资源中,然后从应用程序代码中引用本地副本。这样,即使系统的副本发生变化,您也可以保持对图标外观的控制。

获得本地副本后,请尝试以下方法:

<item
   android:id="@+id/action_delete"
   android:icon="@drawable/ic_delete"
   android:showAsAction="always"
   android:title="Delete" />

 <item
    android:id="@+id/action_add"
    android:icon="@drawable/ic_menu_add"
    android:showAsAction="always"
    android:title="Add" />

还有各种资源也不通过SDK公开,因此最佳做法是拥有本地副本。