2

我有一個EditText,當我執行長按,被按下的單詞被選中,併發生其他兩件事情。Android:刪除「粘貼」「替換」文本選擇氣泡EditText

首先,應用程序頂部會出現一個上下文操作欄,其中包含用於複製,剪切,粘貼,替換,全選的圖標。

其次,另一個上下文菜單出現在單詞周圍,就像選項「泡泡」一樣,有「粘貼」和「替換」之類的東西。我不確定這些氣泡是否是特定於設備的(例如Samsung/Nexus7)。

這些氣泡的作用與操作欄完全相同,並且軟鍵盤打開時屏幕真的很混亂。有沒有什麼辦法可以禁用氣泡,同時將操作欄保留在頂部?

我注意到performLongClick中的「super」函數是這兩個調用的父函數。如果你阻止它,也不會發生。但我還沒有發現任何重寫,但是這會讓我選擇一個,而不是另一個。

編輯:如果您執行雙擊,也會出現上下文菜單。

public class MyExtendedEditText extends EditText { 
.... 
@Override 
public boolean performLongClick() { 

//Super function selects word (otherwise a=b), and calls action bar, 
//and text selection bubbles 

boolean retval =super.performLongClick(); 

    int a = getSelectionStart(); 
    int b = getSelectionEnd(); 

    Log.i("System.out", "long click " + a + " " + b); 


    return retval; 
} 

回答

0

的「上下文操作欄」出現在應用程序的頂部,與複製,剪切,粘貼,替換的圖標,選擇所有可以按照這些解決方案所示的例子被禁用:

至於「選項氣泡」(按照下面的圖片),這似乎當文本選擇手柄s的點擊,有文本在剪貼板中,或者一些文字被替換:

Text selection handle with paste menu

爲了禁用此,有必要防止糊/出現在的的show()方法更換菜單(未記錄)android.widget.Editor類。在菜單出現之前,將對if (!canPaste && !canSuggest) return;進行檢查。被用作基礎來設置這些變量的兩種方法都處於EditText類:

一個更完整的答案,與EditText類的示例性的失控,以及列出的所有解決方案的結合,是available here