Come posso aprire i collegamenti di TextView
in WebView
quando faccio clic sui collegamenti di TextView
.Come possiamo aprire i collegamenti di TextView in Webview
risposta
Spanned spanned = Html.fromHtml("<a href=\"http://google.com\">google.com</a>");
textView.setText(spanned);
EDIT: Questo non è un modo ideale per gestire i clic su un link, ma non so altro modo.
L'attività principale contiene un TextView
con un collegamento. L'URL del link ha uno schema personalizzato.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView link = (TextView)findViewById(R.id.link);
link.setText(
Html.fromHtml("<a href='myscheme://www.google.com'>link</a>"));
link.setMovementMethod(LinkMovementMethod.getInstance());
}
}
Quando questo link viene cliccato Android inizia un Activity
con ACTION_VIEW
utilizzando l'URL del link. Supponiamo che tu abbia un WebViewActivity
che gestisce gli URI con questo schema personalizzato. Ottiene l'URI passato e sostituisce il suo schema con http
.
public class WebViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null) {
String url =
getIntent().getDataString().replace("myscheme://", "http://");
// do something with this URL.
}
}
}
Per gestire schemi personalizzati URI WebViewActivity
deve avere un filtro intento nel file AndroidManifest.xml
:
<activity android:name=".WebViewActivity" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="myscheme" />
</intent-filter>
</activity>
Grazie Pixie, ma si aprirà nel browser predefinito non in WebView. :( –
Oh, ho frainteso la tua domanda: in questo caso puoi creare un URL con il tuo schema e registrarlo con un filtro intent nel file AndroidManifest.x2 – Michael
Grazie ancora, ma puoi spiegarlo un po 'di più? –
hotel_website=(TextView)viewflipper.findViewById(R.id.tv_website);
hotel_website.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "http://" +hotel_website.getText().toString();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
e in XML
<TextView
android:clickable="true"
</TextView>
impostare la proprietà Android: autolink nel layout della vista testo
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="your text"
android:autoLink="web" />
Apre i collegamenti nel browser. La risposta è come aprire i collegamenti in WebView – eugeneek
Solo un piccolo problema. Dopo aver applicato AutoLink, il colore diventa verde e applica colori diversi che non funzionano. Com'è quello ? – Mahadev
Hai salvato la mia giornata. Grazie :) – Atul
Dopo aver lavorato per me. Ho appena usato il codice onTouchEvent da LinkMovementMethod. Puoi impostare il link in textView come Michael menzionato sopra o puoi impostarlo in strings.xml. Uso questa libreria per aprire i collegamenti https://github.com/DreaminginCodeZH/CustomTabsHelper.
textView.setMovementMethod(new MovementMethod() {
@Override
public void initialize(TextView widget, Spannable text) {
}
@Override
public boolean onKeyDown(TextView widget, Spannable text, int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyUp(TextView widget, Spannable text, int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyOther(TextView view, Spannable text, KeyEvent event) {
return false;
}
@Override
public void onTakeFocus(TextView widget, Spannable text, int direction) {
}
@Override
public boolean onTrackballEvent(TextView widget, Spannable text, MotionEvent event) {
return false;
}
/**
* Borrowed code for detecting and selecting link from
* {@link LinkMovementMethod#onTouchEvent(TextView, Spannable, MotionEvent)}
*/
@Override
public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_UP ||
action == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
x -= widget.getTotalPaddingLeft();
y -= widget.getTotalPaddingTop();
x += widget.getScrollX();
y += widget.getScrollY();
Layout layout = widget.getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class);
if (link.length != 0) {
if (action == MotionEvent.ACTION_UP) {
// do whatever else you want here on link being clicked
Selection.removeSelection(buffer);
} else if (action == MotionEvent.ACTION_DOWN) {
Selection.setSelection(buffer,
buffer.getSpanStart(link[0]),
buffer.getSpanEnd(link[0]));
}
return true;
} else {
Selection.removeSelection(buffer);
}
}
return false;
}
@Override
public boolean onGenericMotionEvent(TextView widget, Spannable text, MotionEvent event) {
return false;
}
@Override
public boolean canSelectArbitrarily() {
return false;
}
});
- 1. Aprire i collegamenti popup in UIWebView, possibile?
- 2. Apre i collegamenti nel browser esterno in WebView (WinRT)
- 3. Textview onclicklistener con collegamenti
- 4. Il comportamento predefinito di WebView di Android è stato modificato per aprire internamente tutti i collegamenti?
- 5. Come non consentire a WebView di aprire collegamenti nel browser in WinRT (target = _blank links)?
- 6. Come aprire i collegamenti in Apple Maps o Google Maps?
- 7. CasperJS - Come aprire tutti i collegamenti in una serie di collegamenti
- 8. Come aprire la webview in Blackberry?
- 9. aprire i collegamenti esterni in una nuova scheda senza jQuery
- 10. Come visualizzare i collegamenti selezionabili in UITextView
- 11. Android: apre i collegamenti _blank di destinazione in WebView con il browser esterno
- 12. Come possiamo aprire un collegamento in modalità di navigazione privata
- 13. È possibile selezionare TextView E contenere collegamenti?
- 14. WebView shouldOverrideUrlLoading() non chiamato per i collegamenti non validi
- 15. Android Webview disabilita tutti i collegamenti, ma abilita lo scroll
- 16. Come aprire Safari View Controller da una Webview (swift)
- 17. Come aprire il file PDF locale in WebView in Android?
- 18. Come possiamo aprire file come ppt, doc, pps, rtf, ecc. In Android?
- 19. Come aprire url da stringa in WebView per iPhone
- 20. Come rendere i collegamenti aperti all'interno di Webview o aperti dal browser predefinito in base al nome del dominio?
- 21. come forzare i collegamenti aperti in chrome non scaricarli
- 22. Intercettare i collegamenti dal browser per aprire la mia app per Android
- 23. Perché WebView è molto più veloce di un TextView
- 24. Come posso aprire i popup nella stessa WebView (non una nuova finestra) in Windows UWP?
- 25. Come rimuovere i collegamenti interrotti in Sitecore
- 26. Utilizzo di jQuery per aprire tutti i collegamenti esterni in una nuova finestra
- 27. È possibile gedit aprire i collegamenti in un browser Web facendo clic su di esso?
- 28. Come scrivere i collegamenti javadoc?
- 29. Qual è il migliore tra TextView o WebView?
- 30. regex come sostituire i collegamenti di twitter
correlati: http://stackoverflow.com/questions/6636283/open-a-link-in-a-webview-instead-of-default-browser –