如何向Android的原生“编辑文本”上下文菜单添加选项

时间:2011-02-03 23:45:41

标签: java android menu contextmenu

当用户长按任何编辑文本时,是否可以在项目列表中添加内容? (剪切,复制粘贴,选择文本,全选,输入法)我想在此菜单中添加另一个选项,但无法弄明白。

这个问题有here的副本,第一个答案的最后一条评论说'可能,但不是很漂亮'。然后线程就死了。

我真的很想看到任何有用的例子,肮脏与否:)

3 个答案:

答案 0 :(得分:3)

只有EditText在您的活动中时,才能在现有的edittext上下文菜单中添加更多菜单项。这可以通过onCreateContextMenu()完成。

如果您的活动中没有EditText,则无法进行。

//将项目添加到菜单

EditText UserNameEditText = (EditText)findViewById(R.id.usernameEdittext);
registerForContextMenu(UserNameEditText);

//覆盖上下文菜单

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

    if (v.getId()==R.id.usernameEdittext) 
    {
        menu.add(0, 1, 0, "Fetch New Username");
        menu.add(0, 2, 0, "Check For Duplicate");
    }   
}

如果未调用上下文菜单,则您的edittext不在您的活动中。

答案 1 :(得分:2)

  

是否可以在用户长按任何编辑文本时显示的项目列表中添加内容?

如果EditText在您的活动中,您可以通过onCreateContextMenu()完成此操作。

如果EditText不在你的活动中,那么没有。

  

这里有一个重复的问题,第一个答案的最后一个评论说它可能,但不是很漂亮。然后线程就死了。

首先,这篇文章已有两年了,这在Android年几乎是永远的。

其次,我相当肯定Haseman先生的评估不正确。

答案 2 :(得分:2)

两者都是的!

首先,您需要创建一个实现OnCreateContextMenuListener的类,

public class CMenu implements OnCreateContextMenuListener {  

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

    //Do Something , Like:

    menu.add(0, 1, 0, "copy");
    menu.add(0, 2, 0, "paste");
    }
}

然后

editText.setOnCreateContextMenuListener(cMenu);

现在好了〜