2010-11-15 60 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