Obtener texto seleccionado de TextView

Estoy tratando de obtener el texto que el usuario seleccionó en un TextView, i wan't para usar el android:textIsSelectable="true" para permitir que mi usuario copiar / pegar acciones

Sin embargo, no tengo ni idea de cómo obtener el texto una vez que se muestra el menú de barras de acción, el objetivo es implementar un comportamiento de Google book like: selecciona una palabra y te da una definición.

Creo que lo que buscas es TextView.setCustomSelectionActionModeCallback . Esto le permitirá crear su propio ActionMode.Callback para cuando se seleccione el texto. A continuación, puede utilizar TextView.getSelectionStart y TextView.getSelectionEnd para recuperar el texto seleccionado cuando se selecciona MenuItem . He aquí un ejemplo rápido:

  mTextView.setCustomSelectionActionModeCallback(new Callback() { @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { // Remove the "select all" option menu.removeItem(android.R.id.selectAll); // Remove the "cut" option menu.removeItem(android.R.id.cut); // Remove the "copy all" option menu.removeItem(android.R.id.copy); return true; } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { // Called when action mode is first created. The menu supplied // will be used to generate action buttons for the action mode // Here is an example MenuItem menu.add(0, DEFINITION, 0, "Definition").setIcon(R.drawable.ic_action_book); return true; } @Override public void onDestroyActionMode(ActionMode mode) { // Called when an action mode is about to be exited and // destroyed } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case DEFINITION: int min = 0; int max = mTextView.getText().length(); if (mTextView.isFocused()) { final int selStart = mTextView.getSelectionStart(); final int selEnd = mTextView.getSelectionEnd(); min = Math.max(0, Math.min(selStart, selEnd)); max = Math.max(0, Math.max(selStart, selEnd)); } // Perform your definition lookup with the selected text final CharSequence selectedText = mTextView.getText().subSequence(min, max); // Finish and close the ActionMode mode.finish(); return true; default: break; } return false; } }); 

Resultados

Ejemplo

  • Tamaño de texto de escala automática
  • Enfocar el siguiente texto automáticamente
  • Acceso al texto de Multiline TextView en Android
  • Configuración de TextView TextAppeareance mediante programación en android
  • Multilínea TextView
  • Convertir píxeles en sp
  • Fundido de fondo de un android de vista de texto
  • Actualizar Android TextView
  • Selector de texto no funciona
  • Cómo funciona autolink: map work
  • Actualizar dinámicamente TextView en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.