Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Text Selection Listener

I'm trying to create a graceful, distraction-free text editor.
One of the features I really would like to implement is a pop-up with simple text formatting commands, such as bold, italic, underline, font color, and font face.

To give you an idea, here is a picture of the popup in iOS(Obviously, this is just the idea. I want to create a custom design for the popup):

enter image description here

I have a few questions:
1) Is there such thing as a text selection listener, or some equivalent?
2) Will I need to override the default android action for text selection?
3) How would I display/create this popup? (Vague question, I know...)

I am just starting out in Java and Android development, but I have already created a few apps and have gotten the hang of it.

like image 636
Nikhil Avatar asked Mar 30 '12 00:03

Nikhil


1 Answers

The key term you're looking for here, to help you with your research, is ActionMode, provided that your target is honeycomb or newer.

The API docs (scroll down to "using the contextual action mode) do an ok job of explaining things, once you find what you're looking for, which is the biggest barrier to their use, but basically what you're going to need to do is this:

  1. set your EditText to be selectable (android:textIsSelectable="true" or setTextIsSelectable(true);
  2. Implement the ActionMode.Callback interface and provide your own menu items.

NOTE: as mentioned above, this only works for API level 11+. If you're targeting earlier platforms, getting the events for text selection is much more complicated.

like image 137
JRaymond Avatar answered Oct 13 '22 01:10

JRaymond