L'attributo autoLink
ha un fastidioso bug: se si fa clic nel tuo esempio il numero di telefono, per poi tornare indietro e fare clic sul secondo link URL - è riaprirà il numero di telefono. Questo attributo funziona così male con collegamenti multipli, che ho implementato mia classe, ecco il link su Github ClickableLinksTextView.java
Nel tuo esempio è possibile sostituire la classe TextView
dal mio ClickableLinksTextView
classe nel xml-layout e modificare il codice in questo modo:
ClickableLinksTextView textView = (ClickableLinksTextView)view.findViewById(R.id.mytext);
textView.setText("My text: +4412345678 Go to website: www.google.com Blah blah");
Linkify.addLinks(textView, Linkify.ALL);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
textView.setMovementMethod(ArrowKeyMovementMethod.getInstance());
textView.setTextIsSelectable(true);
// the autoLink attribute must be removed, if you hasn't set it then ok, otherwise call textView.setAutoLink(0);
}
la causa originale del problema nella tua domanda è che la classe LinkMovementMethod
e l'attributo textIsSelectable
non sono compatibili a tutti, anche gli sviluppatori di Android OS ammettono questo the Android OS source code.
Non modificare il metodo di spostamento per il testo che supporta la selezione del testo poiché impedirebbe uno spostamento arbitrario del cursore.
Se la vista testo è selezionabile, gli unici 2 valori metodo corretto movimento sono null
e ArrowKeyMovementMethod
. Ecco perché nel mio esempio ho impostato ArrowKeyMovementMethod
esplicitamente, perché lo Linkify.addLinks
imposta un metodo di spostamento errato e dovrei ripristinarlo.
Per quanto riguarda il bug dell'attributo autoLink, è perché gli sviluppatori Android non hanno copiato correttamente il rilevamento dei collegamenti. Puoi guardare l'esempio di codice nella risposta di @cheng yang, il codice prende solo il primo link, non importa quanti di loro hai.
Cosa stai facendo che non funziona? Il tentativo di renderlo collegato funziona solo? –
Quando effettuo il collegamento, posso fare clic su url e telefoni. Ma quando lo faccio selezionabile non è più possibile fare clic su – pixel