Come visualizzare il testo formattato HTML nella casella popup utilizzando Avviso Dialog Builder?
-
28-10-2019 - |
Domanda
Ho utilizzato Android Alert Dialog Builder per visualizzare alcuni messaggi utente (stringa) come casella pop -up all'utente.
Ora, il mio requisito è che la casella dei messaggi dovrebbe essere in grado di supportare il formato HTML per questo messaggio. Compreso, potrebbe esserci un URL/link restituito in questo messaggio utente. La selezione di questo collegamento dovrebbe mettere l'applicazione corrente in background e aprire il browser del telefono e portare l'utente all'URL che era nel collegamento. La chiusura del browser riporta l'applicazione in primo piano.
Come posso fare questo? Posso utilizzare lo stesso costruttore di dialogo di avviso o qualsiasi altra scelta disponibile?
Soluzione
Tutta la risposta sopra non rimuoverà il tag HTML come, ecc. Se la stringa data contiene, ho provato a rimuovere tutti i tag e questo funziona bene per me
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setTitle("Title");
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_dialog, null);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setMovementMethod(LinkMovementMethod.getInstance());
text.setText(Html.fromHtml("<b>Hello World</b> This is a test of the URL <a href=http://www.example.com> Example</a><p><b>This text is bold</b></p><p><em>This text is emphasized</em></p><p><code>This is computer output</code></p><p>This is<sub> subscript</sub> and <sup>superscript</sup></p>";));
builder.setView(layout);
AlertDialog alert = builder.show();
E il custom_dialog sarebbe come;
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"
/>
Il codice sopra rimuoverà tutto il tag HTML e mostra Esempio come click URL ABLETTO tutti gli altri nel testo di formattazione HTML specificato.
Altri suggerimenti
Crea una finestra di dialogo Avviso personalizzato, Segui questo link
1. Crea un layout per la finestra di dialogo
un. Crea un TextView in quel layout
b. Uso setText(Html.fromHtml(Source text here))
Quindi fa
Linkify.addLinks(Textview, Linkify.ALL)
2.Ilfla questo layout nella finestra di dialogo Avviso come mostrato nel tutorial
Prova a usare il Spannable classe da android.text.Spannable
Spannable span = Spannable.Factory.getInstance().newSpannable("html text");
textView.setText(span);