Android长按编辑文本行为

时间:2010-11-15 04:06:14

标签: android input android-edittext

当用户长按任何编辑文本时,是否可以在项目列表中添加内容? (剪切,复制粘贴,选择文本,全选,输入法)我想为此添加一个选项,它将扫描QR码并将结果粘贴到编辑文本中。我认为从我在自己的应用程序中添加的编辑文本中获取此行为并不是很困难,但我想将此选项添加到手机上任何应用程序内的任何编辑文本中。这样的事情是否可能,如果有的话,任何人都能指出我正确的方向吗?

编辑150赏金:我想在长按时将项目添加到EditText弹出对话框中。我希望找到一种方法来改变系统,而不仅仅是在一个应用程序的上下文中。

3 个答案:

答案 0 :(得分:6)

这是不可能的,因为上下文菜单由应用程序本身填充,而不是由系统填充。您不能强制其他应用程序拥有他们可能在其生命周期中不使用的上下文项。您至少可以在知道您的应用的应用中使用该功能。

创建一个仅填充和处理全局菜单项的活动。其他应用可以通过扩展您的活动来使用此功能。但这也会产生问题,因为其他应用程序将严重依赖您的应用程序。因此,如果您的应用程序未安装在该系统中,则其他应用程序将无法运行。此外,无法在清单文件中指明此依赖关系,以便在您的应用尚未安装时,依赖应用程序隐藏在市场中。
我确定这不是你要找的答案,但是上下文菜单是按照设计制作的。

答案 1 :(得分:4)

有两种方式:第一种由Shahab描述。第二个更简单。您只需覆盖活动的标准方法,例如:

@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo)
{
       if(view.getId()==R.id.MyEditTextId)
       {
            menu.add(Menu.NONE, MyMenu, Menu.NONE, R.string.MyMenuText);
       }
       else
          super.onCreateContextMenu(menu, view, menuInfo);
}

之后你将有长按弹出上下文菜单

答案 2 :(得分:1)

是的,可以在EditText的LongClick上添加项目列表。

为了让你朝着正确的方向前进,我发布了一些代码片段。

在main.xml中执行类似

的操作
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
>

<EditText  
              android:id="@+id/textt"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content" 
              android:text="@string/hello"
/>

</LinearLayout>

在您的主要活动之后,执行类似

的操作
public class edit extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    EditText text = (EditText)this.findViewById(R.id.textt);
    text.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {

            //ADD HERE ABOUT CUT COPY PASTE  
            // TODO Auto-generated method stub
            return false;
        }
    });
}
}

希望有所帮助