Tengo un EditText y quiero que el usuario pueda seleccionar texto y aplicar un formato básico al texto seleccionado (negrita, cursiva, etc.). Sin embargo, aún quiero las opciones estándar de copia, corte y pegado. Leí en algún lugar de la documentación de Android que para hacer esto, debes llamar a setCustomSelectionActionModeCallback() en EditText y pasarle un ActionModeCallback(), así que eso es lo que hice. Aquí está mi código:El botón de desbordamiento fuerza el modo de acción para finalizar
En onCreate de mi actividad() Método: declaración
myEditText.setCustomSelectionActionModeCallback(new TextSelectionActionMode());
de devolución de llamada:
private class TextSelectionActionMode implements ActionMode.Callback {
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
menu.add("Bold");
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
}
El problema que estoy teniendo es que cuando hago clic en el botón de desbordamiento (a acceder a mi elemento de menú "Negrita"), el Modo de Acción se cierra inmediatamente. Si fijo que se muestre siempre como una acción, el uso de este:
MenuItem bold = menu.add("Bold");
bold.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS);
Funciona bien y puede hacer clic en él (aunque, obviamente, no hace nada). ¿Que me estoy perdiendo aqui?
Editar: Solo quería agregar que me encuentro con exactamente el mismo problema si realmente inflar un menú en lugar de agregar elementos de menú programáticamente. Una vez más, sin embargo, el problema desaparece si lo obligo a mostrar siempre como una acción.
Ok, ¿cómo se puede prevenir el problema? – MBulava