My goal is to have an EditText
that has no fancy features, just the Text Selection Handler for moving the cursor more easily -- so no context menus or pop-ups.
I've disabled the appearance of the text editing function actionbar (copy/Paste etc.) by consuming the ActionMode Callback event, as per this solution.
The middle Middle Text Select Handle (see image below) still appears when text exists in the field and a click occurs within the text. Great! I want to keep this behaviour. What I DON'T want is the "PASTE" menu to appear when the Text Select Handle itself is clicked.
I have also disabled long-click input for the EditText by setting android:longClickable="false"
in the styles XML. Disabling the long click prevents the "Paste/Replace" menu from appearing when the mouse is clicked and held (i.e. long touch), however when the mouse is clicked (single touch) within the text, the text selection handle appears, and when the text selection handle itself is clicked, then the "paste" menu option appears (when there's text in the clipboard). This is what I'm trying to prevent.
From what I can see from the source, the ActionPopupWindow
is what pops up with the PASTE/REPLACE options. ActionPopupWindow is a protected variable (mActionPopupWindow) in the private abstract class HandleView within public class android.widget.Editor...
Short of disabling the clipboard service or editing the Android Source code, is there a way that I can prevent this from showing? I tried to define a new style for android:textSelectHandleWindowStyle
, and set android:visibility
to gone
, but it didn't work (app froze for a while when it would otherwise have shown).
You can use this code:
Returning false from
onCreateActionMode
will disable the cut,copy,paste options in API level greater than 11.or simply just use
OR in XML
Update
Actually the user wants to disable the text selection handle itself
1. Create a shape (handle.xml)
2. In your EditText
If you need remove the PASTE suggestion, clear the clipboard before the long click.
Here is a hack to disable "paste" popup. You have to override
EditText
method:This solution works on newer versions of Android as well, unlike the accepted answer.