Personnalisé couper/copier de la barre d'action pour EditText texte poignées de sélection
J'ai une appli où je veux être en mesure de montrer un TextView (ou EditText) qui permet à l'utilisateur de sélectionner le texte, puis appuyez sur un bouton pour avoir quelque chose fait avec ce texte. La mise en œuvre de ce sur les versions d'Android avant en Nid d'abeille n'est pas un problème, mais sur le Nid d'abeilles et au-dessus de la longue par défaut-appuyez sur action est de montrer une barre d'action avec des Copier/Couper/Coller des options. Je peux intercepter long-appuyez sur pour afficher ma propre barre d'action, mais ensuite je n'ai pas le texte des poignées de sélection s'affiche.
Une fois que j'ai commencé ma propre ActionMode comment puis-je obtenir le texte des poignées de sélection s'affiche à l'écran?
Voici le code que j'utilise pour démarrer le ActionMode, qui travaille à l'exception il n'y a pas de texte poignées de sélection apparaissent:
public boolean onLongClick(View v) {
if(actionMode == null)
actionMode = startActionMode(new QuoteCallback());
return true;
}
class QuoteCallback implements ActionMode.Callback {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.quote, menu);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch(item.getItemId()) {
case R.id.quote:
Log.d(TAG, "Selected menu");
mode.finish();
//here is where I would grab the selected text
return true;
}
return false;
}
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
}
}
- Est-il un moyen par lequel nous pouvons le faire sur un bouton cliick, comme.. j'ai un textview, qui est sélectionnable. je veux lancer le defaultactionmode associés esprit d'affichage de texte (avec tout sélectionner et copier), sur le clic d'un bouton. Je ne peux pas utiliser performLongClick () de textview comme, il est déjà remplacé. Est-il possible de réaliser cela? J'ai essayé startActionMode(), mais il s'ouvre sur un espace vide de la barre d'action..
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la réponse à ma propre question; TextView (et donc EditText) est une méthode
setCustomSelectionActionModeCallback()
qui doit être utilisé au lieu destartActionMode()
. En utilisant cela permet une personnalisation du menu utilisé par TextView pour la sélection de texte. Exemple de code:où StyleCallback personnalise le texte menu de sélection en supprimant les Sélectionner Tous et en ajoutant du style actions:
Le XML pour le menu ajouts:
Au-dessus de la solution est bonne si vous souhaitez personnaliser les options de la barre d'action.
Mais si vous souhaitez remplacer l'action de la barre de copier/Coller etc, ci-dessous est le code...
Meilleure façon de le faire est d'ajouter une ligne dans votre thème principal de style que vous avez défini dans votre
application
balise deAndroidManifest
. Ouvrez votre style du thème et ajoutez les éléments suivants :OU
Par exemple:
Mon style du thème que j'ai défini: