2010-11-15 64 views
6

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

编辑150赏金:我正在寻找添加项目到EditText弹出对话框,当它被长时间按下。我希望找到一种方法来实现这个更改系统,而不仅仅是在一个应用程序的上下文中。

+0

你有没有发现如何做这个系统范围?我正试图弄清楚如何取得小成功。 – Silvae 2011-08-31 18:49:54

+3

没有,从来没有遇到过一种方式。我的最佳想法是创建一个键盘替换应用程序,它可以有一个扫描按钮。 – FoamyGuy 2011-08-31 21:24:23

回答

5

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

创建一个仅填充和处理全局菜单项的活动。其他应用可以通过扩展活动来使用该功能。但是这也会产生问题,因为其他应用程序将对您的应用程序产生严重依赖。因此,如果您的应用程序未安装在该系统中,那么其他应用程序将无法工作。此外,无法在清单文件中指明此依赖关系,以便在您的应用程序尚未安装时,依赖应用程序在市场中隐藏。

我确定这不是您正在寻找的答案,但上下文菜单是通过设计制作的。

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; 
     } 
    }); 
} 
} 

希望它可以帮助

3

有2种方式:第一个描述通过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); 
} 

之后,你必须长按弹出式上下文菜单

+0

我认为这更接近我所寻找的。但我并不想在我的一个应用程序中完成这项工作。我希望它在系统范围内,每当我长时间按下任何应用程序中的任何编辑文本时,我想向弹出的菜单添加一个选项。是否有可能做这样的系统范围? – FoamyGuy 2010-11-15 16:57:46

+0

这是不可能的,因为上下文菜单由应用程序本身而不是由系统填充。您无法强制其他应用程序拥有他们可能不需要的上下文项目。您至少可以在知道您的应用的应用中拥有该功能。创建一个具有填充菜单项的活动的库。其他应用可以通过扩展活动来使用该功能。 – Ronnie 2011-09-12 03:39:52

+0

@ userSeven7s:我会争辩。如果你将有一个根活动,它是所有应用程序活动的父活动 - 你可以用我上面描述的方式覆盖onCreatContextMenu - 所以无论何时用户长按会出现上下文菜单,呵呵? – barmaley 2011-09-12 04:52:56