如何在Android中以编程方式创建菜单?

9

现在我想在屏幕底部添加一个菜单。 我写了很多关于它的东西,但仍然不知道如何做到这一点。 我的主要问题是我的主页面上没有一个XML文件。 它看起来是这样的:

   public class start  extends ListActivity {
        static final String[] COUNTRIES = new String[] {
        "NEWS1", "NEWS2","RADIO"};
 Intent intent;
 public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, COUNTRIES));

      ListView lv = getListView();
      lv.setTextFilterEnabled(true);

      lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
if (((TextView) view).getText().equals("NEWS1")){
 intent = new Intent(start.this,  NewsActivity.class);

如何添加带有操作的菜单。 请给我一个例子。 谢谢


选项卡菜单或者是指手机上按下菜单按钮时出现的菜单? - Finn Larsen
手机上的菜单按钮 - Vitaly Menchikovsky
4个回答

38

使用此代码动态添加菜单

private static final int NEW_MENU_ID=Menu.FIRST+1;

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        menu.add(0, NEW_MENU_ID, 0, "New"); 

        return true;
    }

这里 public boolean onPrepareOptionsMenu(Menu menu) 方法有什么用处?移除它似乎没有任何影响。 - Simon Forsberg

6

如果你的主活动中没有XML文件,也没关系。你仍然可以通过以下步骤向其添加菜单 ->

  1. create an android XML file and select menu as type(It will get stored under res folder's menu sub folder).
  2. Now in your main activity code add this two methods ->

    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.yourmenuxmlfilename, menu);
        return true;
    }
    public boolean onOptionsItemSelected(MenuItem item){
        switch(item.getItemId){
            case R.id.item1:
                // what you want to do with first button
                break;
            case .....
                break;
        }
        return true;
    }
    

我需要从哪个方法中调用这个onCreateOptionsMenu(Menu menu)方法?如何向菜单中添加项目? - Vitaly Menchikovsky
只需将此方法添加到您的启动类中,但请记住不要将此方法添加到onCreate()方法中,而是将它们分开添加。然后转到菜单XML文件并添加项目即可,非常简单。 - Rocker
谢谢你的工作,但是这些项目是黑色的,在黑色背景上我看不到它们。 - Vitaly Menchikovsky
如果我的回答对您有帮助,请为我的回答点赞。关于黑色背景,您可以向项目添加图标,以便您可以看到它们。 - Rocker

1

对于上下文菜单,您只需添加

            getListView().setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

                @Override
                public void onCreateContextMenu(ContextMenu menu, View v,
                        ContextMenuInfo menuInfo) {

                    menu.setHeaderTitle("Options");
                    menu.add("Option1");
                    menu.add("Option2");
                    menu.add("Option3");

                }
            });

上下文菜单只会在长按列表项时出现


-1

关于选项菜单

创建一个 Android 的 XML 文件,然后在选项菜单中进行填充

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    new MenuInflater(this).inflate(R.layout.options, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    //and your action for menu item click goes here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接