Eu sei que se você colocar um link em uma visão de texto vai funcionar mas se eu quiser exibir por exemplo:
Google stackoverflow
e não o link inteiro (apenas a tag) Como faço para clicar nesses links?
Respostas:
58 para resposta № 1Você pode ter dois TextViews separados e pode alinhá-los adequadamente no layout, se necessário:
Text1.setText(
Html.fromHtml(
"<a href="http://www.google.com">google</a> "));
Text1.setMovementMethod(LinkMovementMethod.getInstance());
Text2.setText(
Html.fromHtml(
"<a href="http://www.stackoverflow.com">stackoverflow</a> "));
Text2.setMovementMethod(LinkMovementMethod.getInstance());
Então, se você deseja remover o "link sublinhado". Crie uma classe:
public class URLSpanNoUnderline extends URLSpan {
public URLSpanNoUnderline(String url) {
super(url);
}
@Override public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}
Em seguida, adicione esse método à sua classe principal Activity, na qual você tem os TextViews
private void stripUnderlines(TextView textView) {
Spannable s = new SpannableString(textView.getText());
URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
for (URLSpan span: spans) {
int start = s.getSpanStart(span);
int end = s.getSpanEnd(span);
s.removeSpan(span);
span = new URLSpanNoUnderline(span.getURL());
s.setSpan(span, start, end, 0);
}
textView.setText(s);
}
E então chame isso depois de inicializar o TextViews (no seu onCreate):
stripUnderlines(Text1);
stripUnderlines(Text2);
46 para resposta № 2
TextView t2 = (TextView) findViewById(R.id.textviewidname);
t2.setMovementMethod(LinkMovementMethod.getInstance());
e
<string name="google_stackoverflow"><a href="https://stackoverflow.com/questions/9852184/android-textview-hyperlink?rq=1">google stack overflow</a></string>
O link é "Android: hiperlink textview"
e a tag é "estouro do Google Stack"
Defina o primeiro bloco de código no seu java e o segundo bloco no seu arquivo strings.xml. Além disso, certifique-se de referenciar o ID do textView a partir do layout da sua página em seu java.
12 para resposta № 3
Maneira muito simples de fazer isso ---
Em sua atividade--
TextView tv = (TextView) findViewById(R.id.site);
tv.setText(Html.fromHtml("<a href=http://www.stackoverflow.com> STACK OVERFLOW "));
tv.setMovementMethod(LinkMovementMethod.getInstance());
Então você receberá apenas o Tag, não o link inteiro.
Espero que te ajude ...
8 para resposta № 4
android:autoLink="web"
simplesmente funciona se você tiver links completos no seu HTML. O seguinte será destacado em azul e clicável:
5 para a resposta № 5
isso deve funcionar.
TextView t2 = (TextView) findViewById(R.id.text2);
t2.setMovementMethod(LinkMovementMethod.getInstance());
and
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/txtCredits"
android:id="@+id/text2"
android:layout_centerInParent="true"
android:layout_marginTop="20dp"></TextView>
2 para resposta № 6
Esta é a minha implementação de trabalho
private void showMessage()
{
lblMessage.setText("");
List<String> messages = db.getAllGCMMessages();
for (int k = messages.size() - 1; k >= 0; --k)
{
String message = messages.get(k).toString();
lblMessage.append(message + "nn");
}
Linkify.addLinks(lblMessage, Linkify.ALL);
}
e para mudar a cor dos hiperlinks, editei meu xml para textview -
android:textColorLink="#69463d"
2 para resposta № 7
Eu bati no mesmo problema e finalmente encontrei a solução de trabalho.
no arquivo string.xml, defina:
<string name="textWithHtml">The URL link is <a href="http://www.google.com">Google</a></string>
Substitua o caractere "<" menor que o caractere com escape HTML.
No código Java:
String text = v.getContext().getString(R.string.textWithHtml); textView.setText(Html.fromHtml(text)); textView.setMovementMethod(LinkMovementMethod.getInstance());
E o TextBox exibirá corretamente o texto com o link âncora clicável