Je construis une application Android et je veux copier la valeur du texte d'un widget EditText. Il est possible pour l'utilisateur d'appuyer sur Menu+A
puis Menu+C
pour copier la valeur, mais comment le faire de manière programmatique ?
Réponses
Trop de publicités?Voici du code pour implémenter des fonctions de copier/coller à partir de EditText (merci à Warpzit pour la vérification de la version). Vous pouvez les intégrer à l'événement onclick de votre bouton.
public void copy(View v) {
int startSelection = txtNotes.getSelectionStart();
int endSelection = txtNotes.getSelectionEnd();
if ((txtNotes.getText() != null) && (endSelection > startSelection ))
{
String selectedText = txtNotes.getText().toString().substring(startSelection, endSelection);
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(selectedText);
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("WordKeeper",selectedText);
clipboard.setPrimaryClip(clip);
}
}
}
public void paste(View v) {
int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard.getText() != null) {
txtNotes.getText().insert(txtNotes.getSelectionStart(), clipboard.getText());
}
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
if (item.getText() != null) {
txtNotes.getText().insert(txtNotes.getSelectionStart(), item.getText());
}
}
}
Pour activer le copier/coller standard pour TextView, vous pouvez choisir l'une des options suivantes :
Modification du fichier de mise en page : ajoutez la propriété suivante à votre TextView
android:textIsSelectable="true"
Dans votre classe Java, écrivez cette ligne deux définir le grammaticalement.
myTextView.setTextIsSelectable(true);
En appuyant longuement sur le TextView, vous pouvez voir la barre d'action copier/coller.
Pour Kotlin, nous pouvons utiliser la méthode suivante. Vous pouvez coller cette méthode à l'intérieur d'une activité ou d'un fragment.
fun copyToClipBoard(context: Context, message: String) {
val clipBoard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("label",message)
clipBoard.setPrimaryClip(clipData)
}
@FlySwat a déjà donné la bonne réponse, je ne fais que partager la réponse complète :
Utilisez ClipboardManager.setPrimaryClip ( http://developer.Android.com/reference/Android/content/ClipboardManager.html ) :
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
Où label
est une étiquette visible par l'utilisateur pour les données du clip et text
est le texte réel du clip. D'après documents officiels .
Il est important d'utiliser cette importation :
import android.content.ClipboardManager;
1 votes
Gestionnaire de presse-papiers. developer.Android.com/reference/Android/content/
0 votes
Il s'agit essentiellement d'une question dupliquée de : stackoverflow.com/a/13517876/2116185