Ho un EditText e voglio che l'utente sia in grado di selezionare del testo e applicare alcune formattazioni di base al testo selezionato (grassetto, corsivo, ecc.). Voglio comunque la copia standard, tagliare, incollare le opzioni per mostrare, però. Ho letto da qualche parte nella documentazione di Android che per farlo, dovresti chiamare setCustomSelectionActionModeCallback() su EditText e passargli un ActionModeCallback(), quindi è quello che ho fatto. Qui è il mio codice:Il pulsante di overflow forza la Modalità azione per finire
In onCreate di mia attività() metodo: dichiarazione
myEditText.setCustomSelectionActionModeCallback(new TextSelectionActionMode());
richiamata:
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;
}
}
Il problema che sto avendo è che quando si fa clic sul pulsante di overflow (per accedere alla voce del menu "Grassetto"), l'ActionMode si chiude immediatamente. Se ho impostato per mostrare sempre come un'azione, utilizzando questo:
MenuItem bold = menu.add("Bold");
bold.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS);
Funziona benissimo e posso cliccare su di esso (anche se, ovviamente, non fa niente). Cosa mi manca qui?
Modifica: Volevo solo aggiungere che mi imbatto nello stesso identico problema se effettivamente gonfio un menu invece di aggiungere voci di menu a livello di codice. Ancora una volta, però, il problema scompare se lo costringo a mostrare sempre un'azione.
Ok, quindi come si impedisce il problema? – MBulava