studio setonclicklistener example event español ellipsize ejemplo java android sdk click textview

java - setonclicklistener - Android hace que los números de teléfono sean cliqueables, autodetecta



textview onclick event (7)

Android tiene una utilidad expresamente para este propósito: Linkify

TextView noteView = (TextView) findViewById(R.id.noteview); noteView.setText(someContent); Linkify.addLinks(noteView, Linkify.ALL);

Consulte también: https://android-developers.googleblog.com/2008/03/linkify-your-text.html

Cuando uso Android en sitios web y leo correos electrónicos, me doy cuenta de que puedo hacer clic en las direcciones para cargar en Google Maps, o hacer clic en los números de teléfono para llamar, o hacer clic en los correos electrónicos y enviar un correo electrónico.

Estos elementos en la web están formateados de varias maneras, por lo que hay una función incorporada que detecta este tipo de cosas.

¿Cómo permito esto dentro de mi aplicación? Tengo una página que muestra información de contacto en texto sin formato y me gustaría que el usuario solo pudiera hacer clic.

¿Absolutamente necesito crear clicklisteners para cada vista de texto o hay una función del sistema que solo necesito habilitar?


Puede hacer expresiones regulares para cada tipo de datos que desee hacer clic. No sé exactamente cómo se ve el número de teléfono en su país. Esto es para los números de teléfono coincidentes en mi país. P.ej:

String PHONE_REGEX = "([0-9]{3}[//./ ]?(([0-9]{2}[//./ ]?[0-9]{2}[//./ ]?[0-9]{2})|({[0-9]{3}[//./ ]?[0-9]{3})))" String yourHTML = "This is my phone number: 053 12 34 56." // Underline and make Bold yourHTML = yourHTML.replaceAll(PHONE_REGEX, "<b><u>$1</u></b>");


Puedes usarlo en TextView de esta manera,

Configure android: autoLink = "phone" como se muestra abajo,

CustomPartialyClickableTextview customPartialyClickableTextview= (CustomPartialyClickableTextview) findViewById(R.id.textViewCustom); /** * Create Objects For Click Patterns */ ClickPattern email=new ClickPattern(); ClickPattern phone=new ClickPattern(); ClickPattern weblink=new ClickPattern(); /** * set Functionality for what will happen on click of that pattern * In this example pattern is email */ email.setOnClickListener(new ClickPattern.OnClickListener() { @Override public void onClick() { Toast.makeText(MainActivity.this,"email clicked",Toast.LENGTH_LONG).show(); } }); /** * set Functionality for what will happen on click of that pattern * In this example pattern is phone */ phone.setOnClickListener(new ClickPattern.OnClickListener() { @Override public void onClick() { Toast.makeText(MainActivity.this,"phone clicked",Toast.LENGTH_LONG).show(); } }); /** * set Functionality for what will happen on click of that pattern * In this example pattern is weblink */ weblink.setOnClickListener(new ClickPattern.OnClickListener() { @Override public void onClick() { Toast.makeText(MainActivity.this,"website clicked",Toast.LENGTH_LONG).show(); } }); /** * set respective regex string to be used to identify patter */ email.setRegex("//b[A-Z0-9._%+-]+@[A-Z0-9.-]+//.[A-Z]{2,4}//b"); // regex for email phone.setRegex("[1-9][0-9]{9,14}"); // regex for phone number weblink.setRegex("^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"); // regex for weblink /** * add click pattern to the custom textview - first parameter is tag for reference second parameter is ClickPattern object */ customPartialyClickableTextview.addClickPattern("email",email); customPartialyClickableTextview.addClickPattern("phone",phone); customPartialyClickableTextview.addClickPattern("weblink",weblink);

Sin embargo,

Por alguna razón, el código anterior no funciona todo el tiempo. Entonces, agregue el código de abajo también,

android:autoLink="phone"


Si desea detectar diferentes patrones como correos electrónicos, números de contacto, vínculo de enlace y establecer implementaciones de clics independientes para estos patrones, le sugiero que utilice CustomClickableEmailPhoneTextview

Código de muestra para utilizar la biblioteca.

<a href="tel:+4930123456789">+49 / 30 123456789</a>


Utilizar

android:autoLink="phone"

en textView en el archivo de diseño xml


import android.text.util.Linkify; Linkify.addLinks(text, Linkify.PHONE_NUMBERS);


public static void linkifyTextViews(@NonNull TextView... textViews) { for (TextView textView : textViews) { Linkify.addLinks(textView, Linkify.WEB_URLS); textView.setMovementMethod(LinkMovementMethod.getInstance()); } }

Trabajaba para mí en todos los teléfonos ... excepto Samsung . Por lo tanto, elegí la siguiente opción. Textos de números de teléfono transformados para admitir clic para llamar :

<TextView android:layout_width="fill_parent" android:id="@+id/text" android:layout_height="wrap_content" android:autoLink="phone" android:gravity="center" android:linksClickable="true" android:text="@string/txtCredits" />

y luego usé este método auxiliar estático para agregar soporte de enlace web a mis vistas de texto

TextView textView = (TextView) findViewById(R.id.text); textView.setMovementMethod(LinkMovementMethod.getInstance());