我在列表的项目上有一个列表视图和一个上下文菜单。 我尝试创建一个非常简单的东西 - 使用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);
}
}
答案 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公开,因此最佳做法是拥有本地副本。